summaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/407-debugfs-sta-work-fix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/mac80211/patches/407-debugfs-sta-work-fix.patch')
-rw-r--r--package/mac80211/patches/407-debugfs-sta-work-fix.patch68
1 files changed, 0 insertions, 68 deletions
diff --git a/package/mac80211/patches/407-debugfs-sta-work-fix.patch b/package/mac80211/patches/407-debugfs-sta-work-fix.patch
deleted file mode 100644
index 4dbdba998b..0000000000
--- a/package/mac80211/patches/407-debugfs-sta-work-fix.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-Subject: mac80211: fix debugfs lockup
-
-When debugfs_create_dir fails, sta_info_debugfs_add_work will not
-terminate because it will find the same station again and again.
-This is possible whenever debugfs fails for whatever reason; one
-reason is a race condition in mac80211, unfortunately we cannot
-do much about it, so just document it, it just means some station
-may be missing from debugfs.
-
-Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
-Cc: Robin Holt <holt@sgi.com>
----
- net/mac80211/debugfs_sta.c | 11 +++++++++++
- net/mac80211/sta_info.c | 7 ++++++-
- net/mac80211/sta_info.h | 1 +
- 3 files changed, 18 insertions(+), 1 deletion(-)
-
---- everything.orig/net/mac80211/debugfs_sta.c 2008-10-07 20:05:29.000000000 +0200
-+++ everything/net/mac80211/debugfs_sta.c 2008-10-07 20:06:39.000000000 +0200
-@@ -249,11 +249,22 @@ void ieee80211_sta_debugfs_add(struct st
- DECLARE_MAC_BUF(mbuf);
- u8 *mac;
-
-+ sta->debugfs.add_has_run = true;
-+
- if (!stations_dir)
- return;
-
- mac = print_mac(mbuf, sta->sta.addr);
-
-+ /*
-+ * This might fail due to a race condition:
-+ * When mac80211 unlinks a station, the debugfs entries
-+ * remain, but it is already possible to link a new
-+ * station with the same address which triggers adding
-+ * it to debugfs; therefore, if the old station isn't
-+ * destroyed quickly enough the old station's debugfs
-+ * dir might still be around.
-+ */
- sta->debugfs.dir = debugfs_create_dir(mac, stations_dir);
- if (!sta->debugfs.dir)
- return;
---- everything.orig/net/mac80211/sta_info.c 2008-10-07 20:05:29.000000000 +0200
-+++ everything/net/mac80211/sta_info.c 2008-10-07 20:06:39.000000000 +0200
-@@ -635,7 +635,12 @@ static void sta_info_debugfs_add_work(st
-
- spin_lock_irqsave(&local->sta_lock, flags);
- list_for_each_entry(tmp, &local->sta_list, list) {
-- if (!tmp->debugfs.dir) {
-+ /*
-+ * debugfs.add_has_run will be set by
-+ * ieee80211_sta_debugfs_add regardless
-+ * of what else it does.
-+ */
-+ if (!tmp->debugfs.add_has_run) {
- sta = tmp;
- __sta_info_pin(sta);
- break;
---- everything.orig/net/mac80211/sta_info.h 2008-10-07 20:05:29.000000000 +0200
-+++ everything/net/mac80211/sta_info.h 2008-10-07 20:06:39.000000000 +0200
-@@ -300,6 +300,7 @@ struct sta_info {
- struct dentry *inactive_ms;
- struct dentry *last_seq_ctrl;
- struct dentry *agg_status;
-+ bool add_has_run;
- } debugfs;
- #endif
-