diff options
Diffstat (limited to 'package/mac80211/patches/310-mac80211_sw_scan_fix.patch')
-rw-r--r-- | package/mac80211/patches/310-mac80211_sw_scan_fix.patch | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/package/mac80211/patches/310-mac80211_sw_scan_fix.patch b/package/mac80211/patches/310-mac80211_sw_scan_fix.patch new file mode 100644 index 0000000000..0375780da0 --- /dev/null +++ b/package/mac80211/patches/310-mac80211_sw_scan_fix.patch @@ -0,0 +1,33 @@ +From: Johannes Berg <johannes.berg@intel.com> + +The recent scan overhaul broke locking +because now we can jump to code that +attempts to unlock, while we don't have +the mutex held. Fix this by holding the +mutex around all the relevant code. + +Reported-by: Ben Greear <greearb@candelatech.com> +Signed-off-by: Johannes Berg <johannes.berg@intel.com> +--- + net/mac80211/scan.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/net/mac80211/scan.c ++++ b/net/mac80211/scan.c +@@ -686,8 +686,6 @@ void ieee80211_scan_work(struct work_str + goto out_complete; + } + +- mutex_unlock(&local->mtx); +- + /* + * as long as no delay is required advance immediately + * without scheduling a new work +@@ -718,6 +716,7 @@ void ieee80211_scan_work(struct work_str + } while (next_delay == 0); + + ieee80211_queue_delayed_work(&local->hw, &local->scan_work, next_delay); ++ mutex_unlock(&local->mtx); + return; + + out_complete: |