]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
nl80211: fix NL80211_ATTR_CHANNEL_WIDTH attribute type
authorJohannes Berg <johannes.berg@intel.com>
Wed, 25 Mar 2020 08:05:32 +0000 (09:05 +0100)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 3 Apr 2020 13:17:23 +0000 (15:17 +0200)
BugLink: https://bugs.launchpad.net/bugs/1870142
commit 0016d3201753b59f3ae84b868fe66c86ad256f19 upstream.

The new opmode notification used this attribute with a u8, when
it's documented as a u32 and indeed used in userspace as such,
it just happens to work on little-endian systems since userspace
isn't doing any strict size validation, and the u8 goes into the
lower byte. Fix this.

Cc: stable@vger.kernel.org
Fixes: 466b9936bf93 ("cfg80211: Add support to notify station's opmode change to userspace")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Link: https://lore.kernel.org/r/20200325090531.be124f0a11c7.Iedbf4e197a85471ebd729b186d5365c0343bf7a8@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
net/wireless/nl80211.c

index 321c132747ce78880836064bc3573ec3cb7a26ee..dbb6a14968ef3ff05eecd295df8e6efbb2e56a6d 100644 (file)
@@ -16407,7 +16407,7 @@ void cfg80211_sta_opmode_change_notify(struct net_device *dev, const u8 *mac,
                goto nla_put_failure;
 
        if ((sta_opmode->changed & STA_OPMODE_MAX_BW_CHANGED) &&
-           nla_put_u8(msg, NL80211_ATTR_CHANNEL_WIDTH, sta_opmode->bw))
+           nla_put_u32(msg, NL80211_ATTR_CHANNEL_WIDTH, sta_opmode->bw))
                goto nla_put_failure;
 
        if ((sta_opmode->changed & STA_OPMODE_N_SS_CHANGED) &&