Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1f9d7265 authored by Rameshkumar Sundaram's avatar Rameshkumar Sundaram Committed by Lee Jones
Browse files

UPSTREAM: cfg80211: hold bss_lock while updating nontrans_list



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.

Bug: 254441685
Fixes: 0b8fb8235be8 ("cfg80211: Parsing of Multiple BSSID information in scanning")
Signed-off-by: default avatarRameshkumar Sundaram <quic_ramess@quicinc.com>
Link: https://lore.kernel.org/r/1649668071-9370-1-git-send-email-quic_ramess@quicinc.com


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
(cherry picked from commit a5199b5626cd6913cf8776a835bc63d40e0686ad)
Signed-off-by: default avatarLee Jones <joneslee@google.com>
Change-Id: I06b4d5f79fa97b11b2aff61e4f060e8eaca719b2
parent ee2bf3cb
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1388,11 +1388,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);