lkml.org 
[lkml]   [2021]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 119/315] mwifiex: re-fix for unaligned accesses
    Date
    From: Arnd Bergmann <arnd@arndb.de>

    [ Upstream commit 8f4e3d48bb50765ab27ae5bebed2595b20de80a1 ]

    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: 92c70a958b0b ("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>
    ---
    drivers/net/wireless/marvell/mwifiex/pcie.c | 10 ++++------
    1 file changed, 4 insertions(+), 6 deletions(-)

    diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c
    index 7f615ad98aca..5b12d5191acc 100644
    --- a/drivers/net/wireless/marvell/mwifiex/pcie.c
    +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
    @@ -1070,7 +1070,7 @@ static int mwifiex_pcie_delete_cmdrsp_buf(struct mwifiex_adapter *adapter)
    static int mwifiex_pcie_alloc_sleep_cookie_buf(struct mwifiex_adapter *adapter)
    {
    struct pcie_service_card *card = adapter->card;
    - u32 tmp;
    + u32 *cookie;

    card->sleep_cookie_vbase = pci_alloc_consistent(card->dev, sizeof(u32),
    &card->sleep_cookie_pbase);
    @@ -1079,13 +1079,11 @@ static int mwifiex_pcie_alloc_sleep_cookie_buf(struct mwifiex_adapter *adapter)
    "pci_alloc_consistent failed!\n");
    return -ENOMEM;
    }
    + cookie = (u32 *)card->sleep_cookie_vbase;
    /* Init val of Sleep Cookie */
    - tmp = FW_AWAKE_COOKIE;
    - put_unaligned(tmp, card->sleep_cookie_vbase);
    + *cookie = FW_AWAKE_COOKIE;

    - mwifiex_dbg(adapter, INFO,
    - "alloc_scook: sleep cookie=0x%x\n",
    - get_unaligned(card->sleep_cookie_vbase));
    + mwifiex_dbg(adapter, INFO, "alloc_scook: sleep cookie=0x%x\n", *cookie);

    return 0;
    }
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-19 17:39    [W:5.376 / U:0.500 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site