mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-03 00:54:09 +08:00
wifi: mac80211: check for station first in client probe
When probing a client, first check if we have it, and then check for the channel context, otherwise you can trigger the warning there easily by probing when the AP isn't even started yet. Since a client existing means the AP is also operating, we can then keep the warning. Also simplify the moved code a bit. Reported-by: syzbot+999fac712d84878a7379@syzkaller.appspotmail.com Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
abc76cf552
commit
67dfa589aa
@ -4133,19 +4133,20 @@ static int ieee80211_probe_client(struct wiphy *wiphy, struct net_device *dev,
|
||||
mutex_lock(&local->mtx);
|
||||
|
||||
rcu_read_lock();
|
||||
sta = sta_info_get_bss(sdata, peer);
|
||||
if (!sta) {
|
||||
ret = -ENOLINK;
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
qos = sta->sta.wme;
|
||||
|
||||
chanctx_conf = rcu_dereference(sdata->vif.bss_conf.chanctx_conf);
|
||||
if (WARN_ON(!chanctx_conf)) {
|
||||
ret = -EINVAL;
|
||||
goto unlock;
|
||||
}
|
||||
band = chanctx_conf->def.chan->band;
|
||||
sta = sta_info_get_bss(sdata, peer);
|
||||
if (sta) {
|
||||
qos = sta->sta.wme;
|
||||
} else {
|
||||
ret = -ENOLINK;
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
if (qos) {
|
||||
fc = cpu_to_le16(IEEE80211_FTYPE_DATA |
|
||||
|
Loading…
Reference in New Issue
Block a user