diff options
Diffstat (limited to 'package/kernel/mac80211/patches/subsys/370-mac80211-pause-TX-while-changing-interface-type.patch')
-rw-r--r-- | package/kernel/mac80211/patches/subsys/370-mac80211-pause-TX-while-changing-interface-type.patch | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/package/kernel/mac80211/patches/subsys/370-mac80211-pause-TX-while-changing-interface-type.patch b/package/kernel/mac80211/patches/subsys/370-mac80211-pause-TX-while-changing-interface-type.patch deleted file mode 100644 index ce9776c112..0000000000 --- a/package/kernel/mac80211/patches/subsys/370-mac80211-pause-TX-while-changing-interface-type.patch +++ /dev/null @@ -1,57 +0,0 @@ -From b26b5e0861578fa7cdf444b1aa61d06f739eb306 Mon Sep 17 00:00:00 2001 -From: Johannes Berg <johannes.berg@intel.com> -Date: Fri, 22 Jan 2021 17:11:16 +0100 -Subject: [PATCH] mac80211: pause TX while changing interface type - -[ Upstream commit 054c9939b4800a91475d8d89905827bf9e1ad97a ] - -syzbot reported a crash that happened when changing the interface -type around a lot, and while it might have been easy to fix just -the symptom there, a little deeper investigation found that really -the reason is that we allowed packets to be transmitted while in -the middle of changing the interface type. - -Disallow TX by stopping the queues while changing the type. - -Fixes: 34d4bc4d41d2 ("mac80211: support runtime interface type changes") -Reported-by: syzbot+d7a3b15976bf7de2238a@syzkaller.appspotmail.com -Link: https://lore.kernel.org/r/20210122171115.b321f98f4d4f.I6997841933c17b093535c31d29355be3c0c39628@changeid -Signed-off-by: Johannes Berg <johannes.berg@intel.com> -Signed-off-by: Sasha Levin <sashal@kernel.org> ---- - net/mac80211/ieee80211_i.h | 1 + - net/mac80211/iface.c | 6 ++++++ - 2 files changed, 7 insertions(+) - ---- a/net/mac80211/ieee80211_i.h -+++ b/net/mac80211/ieee80211_i.h -@@ -1057,6 +1057,7 @@ enum queue_stop_reason { - IEEE80211_QUEUE_STOP_REASON_FLUSH, - IEEE80211_QUEUE_STOP_REASON_TDLS_TEARDOWN, - IEEE80211_QUEUE_STOP_REASON_RESERVE_TID, -+ IEEE80211_QUEUE_STOP_REASON_IFTYPE_CHANGE, - - IEEE80211_QUEUE_STOP_REASONS, - }; ---- a/net/mac80211/iface.c -+++ b/net/mac80211/iface.c -@@ -1621,6 +1621,10 @@ static int ieee80211_runtime_change_ifty - if (ret) - return ret; - -+ ieee80211_stop_vif_queues(local, sdata, -+ IEEE80211_QUEUE_STOP_REASON_IFTYPE_CHANGE); -+ synchronize_net(); -+ - ieee80211_do_stop(sdata, false); - - ieee80211_teardown_sdata(sdata); -@@ -1641,6 +1645,8 @@ static int ieee80211_runtime_change_ifty - err = ieee80211_do_open(&sdata->wdev, false); - WARN(err, "type change: do_open returned %d", err); - -+ ieee80211_wake_vif_queues(local, sdata, -+ IEEE80211_QUEUE_STOP_REASON_IFTYPE_CHANGE); - return ret; - } - |