• Guenter Roeck's avatar
    brcmfmac: abort and release host after error · 863844ee
    Guenter Roeck authored
    With commit 216b4400 ("brcmfmac: Fix use after free in
    brcmf_sdio_readframes()") applied, we see locking timeouts in
    brcmf_sdio_watchdog_thread().
    
    brcmfmac: brcmf_escan_timeout: timer expired
    INFO: task brcmf_wdog/mmc1:621 blocked for more than 120 seconds.
    Not tainted 4.19.94-07984-g24ff99a0f713 #1
    "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    brcmf_wdog/mmc1 D    0   621      2 0x00000000 last_sleep: 2440793077.  last_runnable: 2440766827
    [<c0aa1e60>] (__schedule) from [<c0aa2100>] (schedule+0x98/0xc4)
    [<c0aa2100>] (schedule) from [<c0853830>] (__mmc_claim_host+0x154/0x274)
    [<c0853830>] (__mmc_claim_host) from [<bf10c5b8>] (brcmf_sdio_watchdog_thread+0x1b0/0x1f8 [brcmfmac])
    [<bf10c5b8>] (brcmf_sdio_watchdog_thread [brcmfmac]) from [<c02570b8>] (kthread+0x178/0x180)
    
    In addition to restarting or exiting the loop, it is also necessary to
    abort the command and to release the host.
    
    Fixes: 216b4400 ("brcmfmac: Fix use after free in brcmf_sdio_readframes()")
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Matthias Kaehlcke <mka@chromium.org>
    Cc: Brian Norris <briannorris@chromium.org>
    Cc: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
    Acked-by: franky.lin@broadcom.com
    Acked-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    863844ee
sdio.c 122 KB