• Michal Kazior's avatar
    mac80211: fix chantype recalc warning · a00f4f6e
    Michal Kazior authored
    When a device driver is unloaded local->interfaces
    list is cleared. If there was more than 1
    interface running and connected (bound to a
    chanctx) then chantype recalc was called and it
    ended up with compat being NULL causing a call
    trace warning.
    
    Warn if compat becomes NULL as a result of
    incompatible bss_conf.chandef of interfaces bound
    to a given channel context only.
    
    The call trace looked like this:
    
     WARNING: CPU: 2 PID: 2594 at /devel/src/linux/net/mac80211/chan.c:557 ieee80211_recalc_chanctx_chantype+0x2cd/0x2e0()
     Modules linked in: ath10k_pci(-) ath10k_core ath
     CPU: 2 PID: 2594 Comm: rmmod Tainted: G        W     3.16.0-rc1+ #150
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
      0000000000000009 ffff88001ea279c0 ffffffff818dfa93 0000000000000000
      ffff88001ea279f8 ffffffff810514a8 ffff88001ce09cd0 ffff88001e03cc58
      0000000000000000 ffff88001ce08840 ffff88001ce09cd0 ffff88001ea27a08
     Call Trace:
      [<ffffffff818dfa93>] dump_stack+0x4d/0x66
      [<ffffffff810514a8>] warn_slowpath_common+0x78/0xa0
      [<ffffffff81051585>] warn_slowpath_null+0x15/0x20
      [<ffffffff818a407d>] ieee80211_recalc_chanctx_chantype+0x2cd/0x2e0
      [<ffffffff818a3dda>] ? ieee80211_recalc_chanctx_chantype+0x2a/0x2e0
      [<ffffffff818a4919>] ieee80211_assign_vif_chanctx+0x1a9/0x770
      [<ffffffff818a6220>] __ieee80211_vif_release_channel+0x70/0x130
      [<ffffffff818a6dd3>] ieee80211_vif_release_channel+0x43/0xb0
      [<ffffffff81885f4e>] ieee80211_stop_ap+0x21e/0x5a0
      [<ffffffff8184b9b5>] __cfg80211_stop_ap+0x85/0x520
      [<ffffffff8181c188>] __cfg80211_leave+0x68/0x120
      [<ffffffff8181c268>] cfg80211_leave+0x28/0x40
      [<ffffffff8181c5f3>] cfg80211_netdev_notifier_call+0x373/0x6b0
      [<ffffffff8107f965>] notifier_call_chain+0x55/0x110
      [<ffffffff8107fa41>] raw_notifier_call_chain+0x11/0x20
      [<ffffffff816a8dc0>] call_netdevice_notifiers_info+0x30/0x60
      [<ffffffff816a8eb9>] __dev_close_many+0x59/0xf0
      [<ffffffff816a9021>] dev_close_many+0x81/0x120
      [<ffffffff816aa1c5>] rollback_registered_many+0x115/0x2a0
      [<ffffffff816aa3a6>] unregister_netdevice_many+0x16/0xa0
      [<ffffffff8187d841>] ieee80211_remove_interfaces+0x121/0x1b0
      [<ffffffff8185e0e6>] ieee80211_unregister_hw+0x56/0x110
      [<ffffffffa0011ac4>] ath10k_mac_unregister+0x14/0x60 [ath10k_core]
      [<ffffffffa0014fe7>] ath10k_core_unregister+0x27/0x40 [ath10k_core]
      [<ffffffffa003b1f4>] ath10k_pci_remove+0x44/0xa0 [ath10k_pci]
      [<ffffffff81373138>] pci_device_remove+0x28/0x60
      [<ffffffff814cb534>] __device_release_driver+0x64/0xd0
      [<ffffffff814cbcc8>] driver_detach+0xb8/0xc0
      [<ffffffff814cb23a>] bus_remove_driver+0x4a/0xb0
      [<ffffffff814cc697>] driver_unregister+0x27/0x50
    Signed-off-by: default avatarMichal Kazior <michal.kazior@tieto.com>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    a00f4f6e
chan.c 42.5 KB