mwifiex: re-fix for unaligned accesses
[ Upstream commit8f4e3d48bb] A patch from 2017 changed some accesses to DMA memory to use get_unaligned_le32() and similar interfaces, to avoid problems with doing unaligned accesson uncached memory. However, the change in the mwifiex_pcie_alloc_sleep_cookie_buf() function ended up changing the size of the access instead, as it operates on a pointer to u8. Change this function back to actually access the entire 32 bits. Note that the pointer is aligned by definition because it came from dma_alloc_coherent(). Fixes:92c70a958b("mwifiex: fix for unaligned reads") Acked-by: Kalle Valo <kvalo@codeaurora.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
460bee9009
commit
67d88b7bf6
@@ -1232,7 +1232,7 @@ static int mwifiex_pcie_delete_cmdrsp_buf(struct mwifiex_adapter *adapter)
|
|||||||
static int mwifiex_pcie_alloc_sleep_cookie_buf(struct mwifiex_adapter *adapter)
|
static int mwifiex_pcie_alloc_sleep_cookie_buf(struct mwifiex_adapter *adapter)
|
||||||
{
|
{
|
||||||
struct pcie_service_card *card = adapter->card;
|
struct pcie_service_card *card = adapter->card;
|
||||||
u32 tmp;
|
u32 *cookie;
|
||||||
|
|
||||||
card->sleep_cookie_vbase = dma_alloc_coherent(&card->dev->dev,
|
card->sleep_cookie_vbase = dma_alloc_coherent(&card->dev->dev,
|
||||||
sizeof(u32),
|
sizeof(u32),
|
||||||
@@ -1243,13 +1243,11 @@ static int mwifiex_pcie_alloc_sleep_cookie_buf(struct mwifiex_adapter *adapter)
|
|||||||
"dma_alloc_coherent failed!\n");
|
"dma_alloc_coherent failed!\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
cookie = (u32 *)card->sleep_cookie_vbase;
|
||||||
/* Init val of Sleep Cookie */
|
/* Init val of Sleep Cookie */
|
||||||
tmp = FW_AWAKE_COOKIE;
|
*cookie = FW_AWAKE_COOKIE;
|
||||||
put_unaligned(tmp, card->sleep_cookie_vbase);
|
|
||||||
|
|
||||||
mwifiex_dbg(adapter, INFO,
|
mwifiex_dbg(adapter, INFO, "alloc_scook: sleep cookie=0x%x\n", *cookie);
|
||||||
"alloc_scook: sleep cookie=0x%x\n",
|
|
||||||
get_unaligned(card->sleep_cookie_vbase));
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user