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: