• Liang Li's avatar
    cfg80211: fix interface combinations check for ADHOC(IBSS) · 4f5a5866
    Liang Li authored
    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>
    4f5a5866
util.c 25.5 KB