Home Home > GIT Browse > stable
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2019-02-15 10:23:48 +0100
committerJiri Slaby <jslaby@suse.cz>2019-02-15 10:23:58 +0100
commit381c2eaffcb4915e2bf67c2cf21ccb4d7121a929 (patch)
tree6d27dc4d8c0b5ae333cbc1cb0ff8e2433414e17f
parentc239577a3b71beb475fd1b0d35b238ab5e2c6ccd (diff)
cfg80211: call disconnect_wk when AP stops (bnc#1012628).
-rw-r--r--patches.kernel.org/4.20.9-014-cfg80211-call-disconnect_wk-when-AP-stops.patch69
-rw-r--r--series.conf1
2 files changed, 70 insertions, 0 deletions
diff --git a/patches.kernel.org/4.20.9-014-cfg80211-call-disconnect_wk-when-AP-stops.patch b/patches.kernel.org/4.20.9-014-cfg80211-call-disconnect_wk-when-AP-stops.patch
new file mode 100644
index 0000000000..ea46108c68
--- /dev/null
+++ b/patches.kernel.org/4.20.9-014-cfg80211-call-disconnect_wk-when-AP-stops.patch
@@ -0,0 +1,69 @@
+From: Johannes Berg <johannes.berg@intel.com>
+Date: Fri, 1 Feb 2019 11:09:54 +0100
+Subject: [PATCH] cfg80211: call disconnect_wk when AP stops
+References: bnc#1012628
+Patch-mainline: 4.20.9
+Git-commit: e005bd7ddea06784c1eb91ac5bb6b171a94f3b05
+
+commit e005bd7ddea06784c1eb91ac5bb6b171a94f3b05 upstream.
+
+Since we now prevent regulatory restore during STA disconnect
+if concurrent AP interfaces are active, we need to reschedule
+this check when the AP state changes. This fixes never doing
+a restore when an AP is the last interface to stop. Or to put
+it another way: we need to re-check after anything we check
+here changes.
+
+Cc: stable@vger.kernel.org
+Fixes: 113f3aaa81bd ("cfg80211: Prevent regulatory restore during STA disconnect in concurrent interfaces")
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ net/wireless/ap.c | 2 ++
+ net/wireless/core.h | 2 ++
+ net/wireless/sme.c | 2 +-
+ 3 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/net/wireless/ap.c b/net/wireless/ap.c
+index 882d97bdc6bf..550ac9d827fe 100644
+--- a/net/wireless/ap.c
++++ b/net/wireless/ap.c
+@@ -41,6 +41,8 @@ int __cfg80211_stop_ap(struct cfg80211_registered_device *rdev,
+ cfg80211_sched_dfs_chan_update(rdev);
+ }
+
++ schedule_work(&cfg80211_disconnect_work);
++
+ return err;
+ }
+
+diff --git a/net/wireless/core.h b/net/wireless/core.h
+index c61dbba8bf47..7f4d5f2f9112 100644
+--- a/net/wireless/core.h
++++ b/net/wireless/core.h
+@@ -444,6 +444,8 @@ void cfg80211_process_wdev_events(struct wireless_dev *wdev);
+ bool cfg80211_does_bw_fit_range(const struct ieee80211_freq_range *freq_range,
+ u32 center_freq_khz, u32 bw_khz);
+
++extern struct work_struct cfg80211_disconnect_work;
++
+ /**
+ * cfg80211_chandef_dfs_usable - checks if chandef is DFS usable
+ * @wiphy: the wiphy to validate against
+diff --git a/net/wireless/sme.c b/net/wireless/sme.c
+index f741d8376a46..7d34cb884840 100644
+--- a/net/wireless/sme.c
++++ b/net/wireless/sme.c
+@@ -667,7 +667,7 @@ static void disconnect_work(struct work_struct *work)
+ rtnl_unlock();
+ }
+
+-static DECLARE_WORK(cfg80211_disconnect_work, disconnect_work);
++DECLARE_WORK(cfg80211_disconnect_work, disconnect_work);
+
+
+ /*
+--
+2.20.1
+
diff --git a/series.conf b/series.conf
index 19abd6b699..783e698ff8 100644
--- a/series.conf
+++ b/series.conf
@@ -1096,6 +1096,7 @@
patches.kernel.org/4.20.9-011-signal-Always-notice-exiting-tasks.patch
patches.kernel.org/4.20.9-012-signal-Better-detection-of-synchronous-signals.patch
patches.kernel.org/4.20.9-013-misc-vexpress-Off-by-one-in-vexpress_syscfg_ex.patch
+ patches.kernel.org/4.20.9-014-cfg80211-call-disconnect_wk-when-AP-stops.patch
########################################################
# Build fixes that apply to the vanilla kernel too.