Patch "wifi: rtw88: Use rtw_iterate_vifs() for rtw_vif_watch_dog_iter()" has been added to the 6.2-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

    wifi: rtw88: Use rtw_iterate_vifs() for rtw_vif_watch_dog_iter()

to the 6.2-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:
     wifi-rtw88-use-rtw_iterate_vifs-for-rtw_vif_watch_do.patch
and it can be found in the queue-6.2 subdirectory.

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



commit b01aee55220aa729d60b6d0d90e05b606ae8add8
Author: Martin Blumenstingl <martin.blumenstingl@xxxxxxxxxxxxxx>
Date:   Sun Jan 8 22:13:23 2023 +0100

    wifi: rtw88: Use rtw_iterate_vifs() for rtw_vif_watch_dog_iter()
    
    [ Upstream commit 313f6dc7c5ed723d0c5691553eff4c0090f16bb8 ]
    
    USB and (upcoming) SDIO support may sleep in the read/write handlers.
    Make rtw_watch_dog_work() use rtw_iterate_vifs() to prevent "scheduling
    while atomic" or "Voluntary context switch within RCU read-side
    critical section!" warnings when accessing the registers using an SDIO
    card (which is where this issue has been spotted in the real world but
    it also affects USB cards).
    
    Fixes: 78d5bf925f30 ("wifi: rtw88: iterate over vif/sta list non-atomically")
    Suggested-by: Ping-Ke Shih <pkshih@xxxxxxxxxxx>
    Reviewed-by: Ping-Ke Shih <pkshih@xxxxxxxxxxx>
    Tested-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@xxxxxxxxxxxxxx>
    Signed-off-by: Kalle Valo <kvalo@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230108211324.442823-3-martin.blumenstingl@xxxxxxxxxxxxxx
    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 888427cf3bdf9..b2e78737bd5d0 100644
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -241,8 +241,10 @@ static void rtw_watch_dog_work(struct work_struct *work)
 	rtw_phy_dynamic_mechanism(rtwdev);
 
 	data.rtwdev = rtwdev;
-	/* use atomic version to avoid taking local->iflist_mtx mutex */
-	rtw_iterate_vifs_atomic(rtwdev, rtw_vif_watch_dog_iter, &data);
+	/* rtw_iterate_vifs internally uses an atomic iterator which is needed
+	 * to avoid taking local->iflist_mtx mutex
+	 */
+	rtw_iterate_vifs(rtwdev, rtw_vif_watch_dog_iter, &data);
 
 	/* fw supports only one station associated to enter lps, if there are
 	 * more than two stations associated to the AP, then we can not enter



[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