diff options
author | Johannes Berg <johannes.berg@intel.com> | 2020-04-24 12:01:04 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2020-04-24 12:38:20 +0200 |
commit | be689f68d040702a3521035d267949d3927971f0 (patch) | |
tree | 8cb2e2acbc16a5f7b5c70308dba371ffe78f3b5e /net/wireless | |
parent | 3b23c184f72acddad39c40373f165e1a9e384758 (diff) | |
download | linux-be689f68d040702a3521035d267949d3927971f0.tar.gz linux-be689f68d040702a3521035d267949d3927971f0.tar.bz2 linux-be689f68d040702a3521035d267949d3927971f0.zip |
cfg80211: reject channels/chandefs with KHz offset >= 1000
This should be covered by the next MHz, make sure that the
numbers are always normalized.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Link: https://lore.kernel.org/r/20200424120103.12b91ecf75f9.I4bf499d58404283bbfacb517d614a816763bccf2@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless')
-rw-r--r-- | net/wireless/chan.c | 3 | ||||
-rw-r--r-- | net/wireless/core.c | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/net/wireless/chan.c b/net/wireless/chan.c index d60e50a3b910..e111c08daa0e 100644 --- a/net/wireless/chan.c +++ b/net/wireless/chan.c @@ -147,6 +147,9 @@ bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef) if (!chandef->chan) return false; + if (chandef->freq1_offset >= 1000) + return false; + control_freq = chandef->chan->center_freq; switch (chandef->width) { diff --git a/net/wireless/core.c b/net/wireless/core.c index 5757dea2aa94..b795f363d004 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c @@ -834,6 +834,9 @@ int wiphy_register(struct wiphy *wiphy) sband->channels[i].orig_mpwr = sband->channels[i].max_power; sband->channels[i].band = band; + + if (WARN_ON(sband->channels[i].freq_offset >= 1000)) + return -EINVAL; } for (i = 0; i < sband->n_iftype_data; i++) { |