|
|
@@ -6123,7 +6123,16 @@
|
|
|
|
|
|
--- a/net/mac80211/ibss.c
|
|
|
+++ b/net/mac80211/ibss.c
|
|
|
-@@ -550,12 +550,12 @@ int ieee80211_ibss_finish_csa(struct iee
|
|
|
+@@ -534,7 +534,7 @@ int ieee80211_ibss_finish_csa(struct iee
|
|
|
+ int err;
|
|
|
+ u16 capability;
|
|
|
+
|
|
|
+- sdata_lock(sdata);
|
|
|
++ sdata_assert_lock(sdata);
|
|
|
+ /* update cfg80211 bss information with the new channel */
|
|
|
+ if (!is_zero_ether_addr(ifibss->bssid)) {
|
|
|
+ capability = WLAN_CAPABILITY_IBSS;
|
|
|
+@@ -550,16 +550,15 @@ int ieee80211_ibss_finish_csa(struct iee
|
|
|
capability);
|
|
|
/* XXX: should not really modify cfg80211 data */
|
|
|
if (cbss) {
|
|
|
@@ -6138,7 +6147,11 @@
|
|
|
|
|
|
/* generate the beacon */
|
|
|
err = ieee80211_ibss_csa_beacon(sdata, NULL);
|
|
|
-@@ -922,7 +922,7 @@ ieee80211_ibss_process_chanswitch(struct
|
|
|
+- sdata_unlock(sdata);
|
|
|
+ if (err < 0)
|
|
|
+ return err;
|
|
|
+
|
|
|
+@@ -922,7 +921,7 @@ ieee80211_ibss_process_chanswitch(struct
|
|
|
IEEE80211_MAX_QUEUE_MAP,
|
|
|
IEEE80211_QUEUE_STOP_REASON_CSA);
|
|
|
|