diff mbox series

ath11k: fix kernel panic during unload/load ath11k modules

Message ID 1642583973-21599-1-git-send-email-quic_vnaralas@quicinc.com (mailing list archive)
State Accepted
Commit 22b59cb965f79ee1accf83172441c9ca0ecb632a
Delegated to: Kalle Valo
Headers show
Series ath11k: fix kernel panic during unload/load ath11k modules | expand

Commit Message

Venkateswara Naralasetty (QUIC) Jan. 19, 2022, 9:19 a.m. UTC
Call netif_napi_del() from ath11k_ahb_free_ext_irq() to fix
the following kernel panic when unload/load ath11k modules
for few iterations.

[  971.201365] Unable to handle kernel paging request at virtual address 6d97a208
[  971.204227] pgd = 594c2919
[  971.211478] [6d97a208] *pgd=00000000
[  971.214120] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
[  971.412024] CPU: 2 PID: 4435 Comm: insmod Not tainted 5.4.89 #0
[  971.434256] Hardware name: Generic DT based system
[  971.440165] PC is at napi_by_id+0x10/0x40
[  971.445019] LR is at netif_napi_add+0x160/0x1dc

[  971.743127] (napi_by_id) from [<807d89a0>] (netif_napi_add+0x160/0x1dc)
[  971.751295] (netif_napi_add) from [<7f1209ac>] (ath11k_ahb_config_irq+0xf8/0x414 [ath11k_ahb])
[  971.759164] (ath11k_ahb_config_irq [ath11k_ahb]) from [<7f12135c>] (ath11k_ahb_probe+0x40c/0x51c [ath11k_ahb])
[  971.768567] (ath11k_ahb_probe [ath11k_ahb]) from [<80666864>] (platform_drv_probe+0x48/0x94)
[  971.779670] (platform_drv_probe) from [<80664718>] (really_probe+0x1c8/0x450)
[  971.789389] (really_probe) from [<80664cc4>] (driver_probe_device+0x15c/0x1b8)
[  971.797547] (driver_probe_device) from [<80664f60>] (device_driver_attach+0x44/0x60)
[  971.805795] (device_driver_attach) from [<806650a0>] (__driver_attach+0x124/0x140)
[  971.814822] (__driver_attach) from [<80662adc>] (bus_for_each_dev+0x58/0xa4)
[  971.823328] (bus_for_each_dev) from [<80663a2c>] (bus_add_driver+0xf0/0x1e8)
[  971.831662] (bus_add_driver) from [<806658a4>] (driver_register+0xa8/0xf0)
[  971.839822] (driver_register) from [<8030269c>] (do_one_initcall+0x78/0x1ac)
[  971.847638] (do_one_initcall) from [<80392524>] (do_init_module+0x54/0x200)
[  971.855968] (do_init_module) from [<803945b0>] (load_module+0x1e30/0x1ffc)
[  971.864126] (load_module) from [<803948b0>] (sys_init_module+0x134/0x17c)
[  971.871852] (sys_init_module) from [<80301000>] (ret_fast_syscall+0x0/0x50)

Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.6.0.1-00760-QCAHKSWPL_SILICONZ-1

Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
---
 drivers/net/wireless/ath/ath11k/ahb.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Kalle Valo Jan. 31, 2022, 1:59 p.m. UTC | #1
Venkateswara Naralasetty <quic_vnaralas@quicinc.com> wrote:

> Call netif_napi_del() from ath11k_ahb_free_ext_irq() to fix
> the following kernel panic when unload/load ath11k modules
> for few iterations.
> 
> [  971.201365] Unable to handle kernel paging request at virtual address 6d97a208
> [  971.204227] pgd = 594c2919
> [  971.211478] [6d97a208] *pgd=00000000
> [  971.214120] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
> [  971.412024] CPU: 2 PID: 4435 Comm: insmod Not tainted 5.4.89 #0
> [  971.434256] Hardware name: Generic DT based system
> [  971.440165] PC is at napi_by_id+0x10/0x40
> [  971.445019] LR is at netif_napi_add+0x160/0x1dc
> 
> [  971.743127] (napi_by_id) from [<807d89a0>] (netif_napi_add+0x160/0x1dc)
> [  971.751295] (netif_napi_add) from [<7f1209ac>] (ath11k_ahb_config_irq+0xf8/0x414 [ath11k_ahb])
> [  971.759164] (ath11k_ahb_config_irq [ath11k_ahb]) from [<7f12135c>] (ath11k_ahb_probe+0x40c/0x51c [ath11k_ahb])
> [  971.768567] (ath11k_ahb_probe [ath11k_ahb]) from [<80666864>] (platform_drv_probe+0x48/0x94)
> [  971.779670] (platform_drv_probe) from [<80664718>] (really_probe+0x1c8/0x450)
> [  971.789389] (really_probe) from [<80664cc4>] (driver_probe_device+0x15c/0x1b8)
> [  971.797547] (driver_probe_device) from [<80664f60>] (device_driver_attach+0x44/0x60)
> [  971.805795] (device_driver_attach) from [<806650a0>] (__driver_attach+0x124/0x140)
> [  971.814822] (__driver_attach) from [<80662adc>] (bus_for_each_dev+0x58/0xa4)
> [  971.823328] (bus_for_each_dev) from [<80663a2c>] (bus_add_driver+0xf0/0x1e8)
> [  971.831662] (bus_add_driver) from [<806658a4>] (driver_register+0xa8/0xf0)
> [  971.839822] (driver_register) from [<8030269c>] (do_one_initcall+0x78/0x1ac)
> [  971.847638] (do_one_initcall) from [<80392524>] (do_init_module+0x54/0x200)
> [  971.855968] (do_init_module) from [<803945b0>] (load_module+0x1e30/0x1ffc)
> [  971.864126] (load_module) from [<803948b0>] (sys_init_module+0x134/0x17c)
> [  971.871852] (sys_init_module) from [<80301000>] (ret_fast_syscall+0x0/0x50)
> 
> Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.6.0.1-00760-QCAHKSWPL_SILICONZ-1
> 
> Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>

Patch applied to ath-next branch of ath.git, thanks.

22b59cb965f7 ath11k: fix kernel panic during unload/load ath11k modules
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/ahb.c b/drivers/net/wireless/ath/ath11k/ahb.c
index 3fcec42..f407d4a 100644
--- a/drivers/net/wireless/ath/ath11k/ahb.c
+++ b/drivers/net/wireless/ath/ath11k/ahb.c
@@ -391,6 +391,8 @@  static void ath11k_ahb_free_ext_irq(struct ath11k_base *ab)
 
 		for (j = 0; j < irq_grp->num_irq; j++)
 			free_irq(ab->irq_num[irq_grp->irqs[j]], irq_grp);
+
+		netif_napi_del(&irq_grp->napi);
 	}
 }