From: Pagadala Yesu Anjaneyulu 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 --- net/wireless/nl80211.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 0323b9c383b7..919ac18a2e92 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -18944,6 +18944,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; @@ -19045,6 +19046,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: -- 2.34.1