mac80211_hwsim: calculate if_combination.max_interfaces
If we just set this to 2048, and have multiple limits you
can select from, the total number might run over and cause
a warning in cfg80211. This doesn't make sense, so we just
calculate the total max_interfaces now.
Reported-by: syzbot+8f91bd563bbff230d0ee@syzkaller.appspotmail.com
Fixes: 99e3a44bac
("mac80211_hwsim: allow setting iftype support")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
a58d7525b8
commit
45fcef8b72
@ -2644,7 +2644,7 @@ static int mac80211_hwsim_new_radio(struct genl_info *info,
|
||||
enum nl80211_band band;
|
||||
const struct ieee80211_ops *ops = &mac80211_hwsim_ops;
|
||||
struct net *net;
|
||||
int idx;
|
||||
int idx, i;
|
||||
int n_limits = 0;
|
||||
|
||||
if (WARN_ON(param->channels > 1 && !param->use_chanctx))
|
||||
@ -2768,12 +2768,23 @@ static int mac80211_hwsim_new_radio(struct genl_info *info,
|
||||
goto failed_hw;
|
||||
}
|
||||
|
||||
data->if_combination.max_interfaces = 0;
|
||||
for (i = 0; i < n_limits; i++)
|
||||
data->if_combination.max_interfaces +=
|
||||
data->if_limits[i].max;
|
||||
|
||||
data->if_combination.n_limits = n_limits;
|
||||
data->if_combination.max_interfaces = 2048;
|
||||
data->if_combination.limits = data->if_limits;
|
||||
|
||||
hw->wiphy->iface_combinations = &data->if_combination;
|
||||
hw->wiphy->n_iface_combinations = 1;
|
||||
/*
|
||||
* If we actually were asked to support combinations,
|
||||
* advertise them - if there's only a single thing like
|
||||
* only IBSS then don't advertise it as combinations.
|
||||
*/
|
||||
if (data->if_combination.max_interfaces > 1) {
|
||||
hw->wiphy->iface_combinations = &data->if_combination;
|
||||
hw->wiphy->n_iface_combinations = 1;
|
||||
}
|
||||
|
||||
if (param->ciphers) {
|
||||
memcpy(data->ciphers, param->ciphers,
|
||||
|
Loading…
Reference in New Issue
Block a user