diff options
author | Johannes Berg <johannes.berg@intel.com> | 2024-02-06 16:54:09 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2024-02-12 21:22:48 +0100 |
commit | 49c17da387bb069d802b9be538f0f07d08e1c2b8 (patch) | |
tree | 153d2287ff91a201b295b064a96863781e6aabee /net/mac80211 | |
parent | a110a3b79177ddd7e7295671df97fb5386406835 (diff) | |
download | lwn-49c17da387bb069d802b9be538f0f07d08e1c2b8.tar.gz lwn-49c17da387bb069d802b9be538f0f07d08e1c2b8.zip |
wifi: mac80211: drop injection on disabled-chan monitor
If the driver uses the new IEEE80211_CHAN_CAN_MONITOR, we
may monitor on channels that are, e.g. via regulatory,
otherwise considered disabled. However, we really shouldn't
transmit on them, so prevent that.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240206164849.9c03dcf67dbe.Ib86a851c274c440908c663f6dd774b79bfc3965d@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/tx.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 876de3ba98ba..373275d18f5a 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c @@ -5,7 +5,7 @@ * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> * Copyright 2007 Johannes Berg <johannes@sipsolutions.net> * Copyright 2013-2014 Intel Mobile Communications GmbH - * Copyright (C) 2018-2022 Intel Corporation + * Copyright (C) 2018-2024 Intel Corporation * * Transmit and frame generation functions. */ @@ -2394,6 +2394,14 @@ netdev_tx_t ieee80211_monitor_start_xmit(struct sk_buff *skb, goto fail_rcu; /* + * If driver/HW supports IEEE80211_CHAN_CAN_MONITOR we still + * shouldn't transmit on disabled channels. + */ + if (!cfg80211_chandef_usable(local->hw.wiphy, chandef, + IEEE80211_CHAN_DISABLED)) + goto fail_rcu; + + /* * Frame injection is not allowed if beaconing is not allowed * or if we need radar detection. Beaconing is usually not allowed when * the mode or operation (Adhoc, AP, Mesh) does not support DFS. |