Commit 8f4e3d48 authored by Arnd Bergmann's avatar Arnd Bergmann

mwifiex: re-fix for unaligned accesses

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: 92c70a95 ("mwifiex: fix for unaligned reads")
Acked-by: default avatarKalle Valo <kvalo@codeaurora.org>
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent dd979d7a
...@@ -1231,7 +1231,7 @@ static int mwifiex_pcie_delete_cmdrsp_buf(struct mwifiex_adapter *adapter) ...@@ -1231,7 +1231,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),
...@@ -1242,13 +1242,11 @@ static int mwifiex_pcie_alloc_sleep_cookie_buf(struct mwifiex_adapter *adapter) ...@@ -1242,13 +1242,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;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment