Patch "cfg80211: hold bss_lock while updating nontrans_list" has been added to the 5.17-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

    cfg80211: hold bss_lock while updating nontrans_list

to the 5.17-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:
     cfg80211-hold-bss_lock-while-updating-nontrans_list.patch
and it can be found in the queue-5.17 subdirectory.

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



commit 304f4c81cf51c922e1267063095f7bf784f19591
Author: Rameshkumar Sundaram <quic_ramess@xxxxxxxxxxx>
Date:   Mon Apr 11 14:37:51 2022 +0530

    cfg80211: hold bss_lock while updating nontrans_list
    
    [ Upstream commit a5199b5626cd6913cf8776a835bc63d40e0686ad ]
    
    Synchronize additions to nontrans_list of transmitting BSS with
    bss_lock to avoid races. Also when cfg80211_add_nontrans_list() fails
    __cfg80211_unlink_bss() needs bss_lock to be held (has lockdep assert
    on bss_lock). So protect the whole block with bss_lock to avoid
    races and warnings. Found during code review.
    
    Fixes: 0b8fb8235be8 ("cfg80211: Parsing of Multiple BSSID information in scanning")
    Signed-off-by: Rameshkumar Sundaram <quic_ramess@xxxxxxxxxxx>
    Link: https://lore.kernel.org/r/1649668071-9370-1-git-send-email-quic_ramess@xxxxxxxxxxx
    Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/wireless/scan.c b/net/wireless/scan.c
index b2fdac96bab0..4a6d86432910 100644
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -2018,11 +2018,13 @@ cfg80211_inform_single_bss_data(struct wiphy *wiphy,
 		/* this is a nontransmitting bss, we need to add it to
 		 * transmitting bss' list if it is not there
 		 */
+		spin_lock_bh(&rdev->bss_lock);
 		if (cfg80211_add_nontrans_list(non_tx_data->tx_bss,
 					       &res->pub)) {
 			if (__cfg80211_unlink_bss(rdev, res))
 				rdev->bss_generation++;
 		}
+		spin_unlock_bh(&rdev->bss_lock);
 	}
 
 	trace_cfg80211_return_bss(&res->pub);



[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