mac80211: fix chantype recalc warning
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: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>