summaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2023-03-01 11:09:16 +0100
committerJohannes Berg <johannes.berg@intel.com>2023-03-07 10:29:53 +0100
commit3ffcc659dc6fa84da7db57f56fd48756c5a60fba (patch)
tree5e886ac8c37f4cdb8cbe177727a25e20cee8c326 /net/mac80211
parentwifi: mac80211: clear all bits that relate rtap fields on skb (diff)
downloadlinux-3ffcc659dc6fa84da7db57f56fd48756c5a60fba.tar.xz
linux-3ffcc659dc6fa84da7db57f56fd48756c5a60fba.zip
wifi: mac80211: check key taint for beacon protection
This will likely never happen, but for completeness check the key taint flag before using a key for beacon protection. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Gregory Greenman <gregory.greenman@intel.com> Link: https://lore.kernel.org/r/20230301115906.cf2c3fee6f1f.I2f19b3e04e31c99bed3c9dc71935bf513b2cd177@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/tx.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 7699fb410670..1f9294f5baa4 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -5115,6 +5115,12 @@ static int ieee80211_beacon_protect(struct sk_buff *skb,
tx.key = rcu_dereference(link->default_beacon_key);
if (!tx.key)
return 0;
+
+ if (unlikely(tx.key->flags & KEY_FLAG_TAINTED)) {
+ tx.key = NULL;
+ return -EINVAL;
+ }
+
tx.local = local;
tx.sdata = sdata;
__skb_queue_head_init(&tx.skbs);