diff options
author | Ingo Molnar <mingo@kernel.org> | 2014-11-16 10:50:25 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2014-11-16 10:50:25 +0100 |
commit | e9ac5f0fa8549dffe2a15870217a9c2e7cd557ec (patch) | |
tree | 863e0e108f7b7ba2dffc7575bbdfc2d454fc2017 /net/wireless | |
parent | 44dba3d5d6a10685fb15bd1954e62016334825e0 (diff) | |
parent | 6e998916dfe327e785e7c2447959b2c1a3ea4930 (diff) | |
download | linux-next-e9ac5f0fa8549dffe2a15870217a9c2e7cd557ec.tar.gz |
Merge branch 'sched/urgent' into sched/core, to pick up fixes before applying more changes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'net/wireless')
-rw-r--r-- | net/wireless/nl80211.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index cb9f5a44ffad..5839c85075f1 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -5927,6 +5927,7 @@ static int nl80211_channel_switch(struct sk_buff *skb, struct genl_info *info) int err; bool need_new_beacon = false; int len, i; + u32 cs_count; if (!rdev->ops->channel_switch || !(rdev->wiphy.flags & WIPHY_FLAG_HAS_CHANNEL_SWITCH)) @@ -5963,7 +5964,14 @@ static int nl80211_channel_switch(struct sk_buff *skb, struct genl_info *info) if (need_new_beacon && !info->attrs[NL80211_ATTR_CSA_IES]) return -EINVAL; - params.count = nla_get_u32(info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]); + /* Even though the attribute is u32, the specification says + * u8, so let's make sure we don't overflow. + */ + cs_count = nla_get_u32(info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]); + if (cs_count > 255) + return -EINVAL; + + params.count = cs_count; if (!need_new_beacon) goto skip_beacons; |