mirror_ubuntu-kernels/drivers/net/wireless/ath
Johan Hovold d4ba1ff87b ath11k: fix netdev open race
Make sure to allocate resources needed before registering the device.

This specifically avoids having a racing open() trigger a BUG_ON() in
mod_timer() when ath11k_mac_op_start() is called before the
mon_reap_timer as been set up.

I did not see this issue with next-20220310, but I hit it on every probe
with next-20220511. Perhaps some timing changed in between.

Here's the backtrace:

[   51.346947] kernel BUG at kernel/time/timer.c:990!
[   51.346958] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
...
[   51.578225] Call trace:
[   51.583293]  __mod_timer+0x298/0x390
[   51.589518]  mod_timer+0x14/0x20
[   51.595368]  ath11k_mac_op_start+0x41c/0x4a0 [ath11k]
[   51.603165]  drv_start+0x38/0x60 [mac80211]
[   51.610110]  ieee80211_do_open+0x29c/0x7d0 [mac80211]
[   51.617945]  ieee80211_open+0x60/0xb0 [mac80211]
[   51.625311]  __dev_open+0x100/0x1c0
[   51.631420]  __dev_change_flags+0x194/0x210
[   51.638214]  dev_change_flags+0x24/0x70
[   51.644646]  do_setlink+0x228/0xdb0
[   51.650723]  __rtnl_newlink+0x460/0x830
[   51.657162]  rtnl_newlink+0x4c/0x80
[   51.663229]  rtnetlink_rcv_msg+0x124/0x390
[   51.669917]  netlink_rcv_skb+0x58/0x130
[   51.676314]  rtnetlink_rcv+0x18/0x30
[   51.682460]  netlink_unicast+0x250/0x310
[   51.688960]  netlink_sendmsg+0x19c/0x3e0
[   51.695458]  ____sys_sendmsg+0x220/0x290
[   51.701938]  ___sys_sendmsg+0x7c/0xc0
[   51.708148]  __sys_sendmsg+0x68/0xd0
[   51.714254]  __arm64_sys_sendmsg+0x28/0x40
[   51.720900]  invoke_syscall+0x48/0x120

Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3

Fixes: d5c65159f2 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
Fixes: 840c36fa72 ("ath11k: dp: stop rx pktlog before suspend")
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20220517103436.15867-1-johan+linaro@kernel.org
2022-05-30 14:19:40 +03:00
..
ar5523 wireless-next patches for v5.19 2022-05-03 17:27:51 -07:00
ath5k ath5k: replace ternary operator with min() 2022-05-22 15:29:42 +03:00
ath6kl ath6kl: fix typos in comments 2022-03-18 17:38:45 +02:00
ath9k ath9k: replace ternary operator with max() 2022-05-22 15:31:18 +03:00
ath10k ath10k: fix misreported tx bandwidth for 160Mhz 2022-05-22 15:28:33 +03:00
ath11k ath11k: fix netdev open race 2022-05-30 14:19:40 +03:00
carl9170 Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 2022-05-03 08:38:03 +03:00
wcn36xx Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 2022-05-03 08:38:03 +03:00
wil6210 Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 2022-05-16 13:16:34 +03:00
ath.h ath: Modify ath_key_delete() to not need full key entry 2020-12-17 08:51:17 +02:00
debug.c
dfs_pattern_detector.c ath: dfs_pattern_detector: Avoid open coded arithmetic in memory allocation 2022-01-17 14:41:51 +02:00
dfs_pattern_detector.h
dfs_pri_detector.c ath: dfs_pri_detector: Demote zero/half completed kernel-doc headers 2020-11-07 10:06:49 +02:00
dfs_pri_detector.h
hw.c ath: Fix wrong function name in comments 2021-06-15 17:01:24 +03:00
Kconfig
key.c ath: Modify ath_key_delete() to not need full key entry 2020-12-17 08:51:17 +02:00
main.c
Makefile
reg.h
regd_common.h ath: regdom: extend South Korea regulatory domain support 2021-12-08 10:37:38 +02:00
regd.c Revert "ath: add support for special 0x0 regulatory domain" 2022-03-07 19:45:08 +02:00
regd.h ath: regdom: extend South Korea regulatory domain support 2021-12-08 10:37:38 +02:00
spectral_common.h ath: Replace zero-length arrays with flexible-array members 2022-02-21 12:26:28 +02:00
trace.c
trace.h