Patch "rtw88: Fix potential probe error handling race with wow firmware loading" has been added to the 5.8-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    rtw88: Fix potential probe error handling race with wow firmware loading

to the 5.8-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     rtw88-fix-potential-probe-error-handling-race-with-w.patch
and it can be found in the queue-5.8 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit a62b3a4e2fc1b2439d2fb6faa938de42af3318bd
Author: Andreas Färber <afaerber@xxxxxxx>
Date:   Sun Sep 20 15:26:21 2020 +0200

    rtw88: Fix potential probe error handling race with wow firmware loading
    
    [ Upstream commit ac4bac99161e8f7a7a9faef70d8ca8f69d5493a9 ]
    
    If rtw_core_init() fails to load the wow firmware, rtw_core_deinit()
    will not get called to clean up the regular firmware.
    
    Ensure that an error loading the wow firmware does not produce an oops
    for the regular firmware by waiting on its completion to be signalled
    before returning. Also release the loaded firmware.
    
    Fixes: c8e5695eae99 ("rtw88: load wowlan firmware if wowlan is supported")
    Cc: Chin-Yen Lee <timlee@xxxxxxxxxxx>
    Cc: Yan-Hsuan Chuang <yhchuang@xxxxxxxxxxx>
    Signed-off-by: Andreas Färber <afaerber@xxxxxxx>
    Signed-off-by: Kalle Valo <kvalo@xxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20200920132621.26468-3-afaerber@xxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c
index 80b880b671eaa..6a881d0be9bf0 100644
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -1465,6 +1465,9 @@ int rtw_core_init(struct rtw_dev *rtwdev)
 		ret = rtw_load_firmware(rtwdev, RTW_WOWLAN_FW);
 		if (ret) {
 			rtw_warn(rtwdev, "no wow firmware loaded\n");
+			wait_for_completion(&rtwdev->fw.completion);
+			if (rtwdev->fw.firmware)
+				release_firmware(rtwdev->fw.firmware);
 			return ret;
 		}
 	}



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux