mwifiex: pcie: read FROMDEVICE DMA-able memory with READ_ONCE()
authorBrian Norris <briannorris@chromium.org>
Fri, 13 Jan 2017 23:35:38 +0000 (15:35 -0800)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 20 Jan 2017 09:46:32 +0000 (11:46 +0200)
In mwifiex_delay_for_sleep_cookie(), we're looping and waiting for the
PCIe endpoint to write a magic value back to memory, to signal that it
has finished going to sleep. We're not letting the compiler know that
this might change underneath our feet though. Let's do that, for good
hygiene.

I'm not aware of this fixing any concrete problems. I also give no
guarantee that this loop is actually correct in any other way, but at
least this looks like an improvement to me.

Signed-off-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/marvell/mwifiex/pcie.c

index b8a07d35973ad35bf5669d15f09c90dd29559c7a..ca51411e4a4c7a3386452b7c18210ee9f55e4535 100644 (file)
@@ -442,7 +442,7 @@ static void mwifiex_delay_for_sleep_cookie(struct mwifiex_adapter *adapter,
 
        for (count = 0; count < max_delay_loop_cnt; count++) {
                buffer = card->cmdrsp_buf->data - INTF_HEADER_LEN;
-               sleep_cookie = *(u32 *)buffer;
+               sleep_cookie = READ_ONCE(*(u32 *)buffer);
 
                if (sleep_cookie == MWIFIEX_DEF_SLEEP_COOKIE) {
                        mwifiex_dbg(adapter, INFO,