From e01f1c70e47ec76e8d77d3413eff86bab6c84b4c Mon Sep 17 00:00:00 2001 From: Pagadala Yesu Anjaneyulu Date: Mon, 21 Sep 2026 22:54:55 +0300 Subject: [PATCH] wifi: nl80211: reject color-change requests that change 6 GHz power type AP power type is regulatory operating state, so changing it requires full AP reconfiguration and validation. Allowing it through color-change could bypass stricter checks done in AP setup. Keep color-change behavior limited to color updates only. Signed-off-by: Pagadala Yesu Anjaneyulu Reviewed-by: Johannes Berg Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20260921224731.1d8727ce4fbf.I1049058ae5e60b7ebcb450d03f6b13cee573eeea@changeid Signed-off-by: Johannes Berg --- net/wireless/nl80211.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index ae994568c86e..58d336498125 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -19085,6 +19085,7 @@ static int nl80211_color_change(struct sk_buff *skb, struct genl_info *info) struct cfg80211_color_change_settings params = {}; struct net_device *dev = info->user_ptr[1]; struct wireless_dev *wdev = dev->ieee80211_ptr; + enum ieee80211_ap_reg_power reg_power; struct nlattr **tb; u16 offset; int err; @@ -19186,6 +19187,15 @@ static int nl80211_color_change(struct sk_buff *skb, struct genl_info *info) goto out; } + reg_power = + cfg80211_get_6ghz_power_type(params.beacon_color_change.tail, + params.beacon_color_change.tail_len, 0); + if (wdev->links[params.link_id].ap.reg_power != reg_power) { + GENL_SET_ERR_MSG(info, "6 GHz power type change not allowed"); + err = -EINVAL; + goto out; + } + err = rdev_color_change(rdev, dev, ¶ms); out: