Commit 4f5a5866 authored by Liang Li's avatar Liang Li Committed by Greg Kroah-Hartman

cfg80211: fix interface combinations check for ADHOC(IBSS)

partial of commit 8e8b41f9 upstream.

As part of commit 463454b5 ("cfg80211: fix interface
combinations check"), this extra check was introduced:

       if ((all_iftypes & used_iftypes) != used_iftypes)
               goto cont;

However, most wireless NIC drivers did not advertise ADHOC in
wiphy.iface_combinations[i].limits[] and hence we'll get -EBUSY
when we bring up a ADHOC wlan with commands similar to:

 # iwconfig wlan0 mode ad-hoc && ifconfig wlan0 up

In commit 8e8b41f9 ("cfg80211: enforce lack of interface
combinations"), the change below fixes the issue:

       if (total == 1)
               return 0;

But it also introduces other dependencies for stable. For example,
a full cherry pick of 8e8b41f9 would introduce additional
regressions unless we also start cherry picking driver specific
fixes like the following:

  9b4760e3  ath5k: add possible wiphy interface combinations
  1ae2fc25  mac80211_hwsim: advertise interface combinations
  20c8e8dc  ath9k: add possible wiphy interface combinations

And the purpose of the 'if (total == 1)' is to cover the specific
use case (IBSS, adhoc) that was mentioned above. So we just pick
the specific part out from 8e8b41f9 here.

Doing so gives stable kernels a way to fix the change introduced
by 463454b5, without having to make cherry picks specific to
various NIC drivers.
Signed-off-by: default avatarLiang Li <liang.li@windriver.com>
Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b27c59d2
......@@ -975,6 +975,9 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev,
}
mutex_unlock(&rdev->devlist_mtx);
if (total == 1)
return 0;
for (i = 0; i < rdev->wiphy.n_iface_combinations; i++) {
const struct ieee80211_iface_combination *c;
struct ieee80211_iface_limit *limits;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment