* [PATCH] wifi: mt76: disable napi on driver removal
@ 2025-05-06 11:55 Fedor Pchelkin
2025-05-12 5:40 ` Mingyen Hsieh (謝明諺)
0 siblings, 1 reply; 2+ messages in thread
From: Fedor Pchelkin @ 2025-05-06 11:55 UTC (permalink / raw)
To: Felix Fietkau, Lorenzo Bianconi
Cc: Fedor Pchelkin, Ryder Lee, Shayne Chen, Sean Wang,
Matthias Brugger, AngeloGioacchino Del Regno, linux-wireless,
linux-kernel, linux-arm-kernel, linux-mediatek, Jakub Kicinski,
Joe Damato, Eric Dumazet, lvc-project, stable
A warning on driver removal started occurring after commit 9dd05df8403b
("net: warn if NAPI instance wasn't shut down"). Disable tx napi before
deleting it in mt76_dma_cleanup().
WARNING: CPU: 4 PID: 18828 at net/core/dev.c:7288 __netif_napi_del_locked+0xf0/0x100
CPU: 4 UID: 0 PID: 18828 Comm: modprobe Not tainted 6.15.0-rc4 #4 PREEMPT(lazy)
Hardware name: ASUS System Product Name/PRIME X670E-PRO WIFI, BIOS 3035 09/05/2024
RIP: 0010:__netif_napi_del_locked+0xf0/0x100
Call Trace:
<TASK>
mt76_dma_cleanup+0x54/0x2f0 [mt76]
mt7921_pci_remove+0xd5/0x190 [mt7921e]
pci_device_remove+0x47/0xc0
device_release_driver_internal+0x19e/0x200
driver_detach+0x48/0x90
bus_remove_driver+0x6d/0xf0
pci_unregister_driver+0x2e/0xb0
__do_sys_delete_module.isra.0+0x197/0x2e0
do_syscall_64+0x7b/0x160
entry_SYSCALL_64_after_hwframe+0x76/0x7e
Tested with mt7921e but the same pattern can be actually applied to other
mt76 drivers calling mt76_dma_cleanup() during removal. Tx napi is enabled
in their *_dma_init() functions and only toggled off and on again inside
their suspend/resume/reset paths. So it should be okay to disable tx
napi in such a generic way.
Found by Linux Verification Center (linuxtesting.org).
Fixes: 2ac515a5d74f ("mt76: mt76x02: use napi polling for tx cleanup")
Cc: stable@vger.kernel.org
Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
---
drivers/net/wireless/mediatek/mt76/dma.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/wireless/mediatek/mt76/dma.c b/drivers/net/wireless/mediatek/mt76/dma.c
index 844af16ee551..35b4ec91979e 100644
--- a/drivers/net/wireless/mediatek/mt76/dma.c
+++ b/drivers/net/wireless/mediatek/mt76/dma.c
@@ -1011,6 +1011,7 @@ void mt76_dma_cleanup(struct mt76_dev *dev)
int i;
mt76_worker_disable(&dev->tx_worker);
+ napi_disable(&dev->tx_napi);
netif_napi_del(&dev->tx_napi);
for (i = 0; i < ARRAY_SIZE(dev->phys); i++) {
--
2.49.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] wifi: mt76: disable napi on driver removal
2025-05-06 11:55 [PATCH] wifi: mt76: disable napi on driver removal Fedor Pchelkin
@ 2025-05-12 5:40 ` Mingyen Hsieh (謝明諺)
0 siblings, 0 replies; 2+ messages in thread
From: Mingyen Hsieh (謝明諺) @ 2025-05-12 5:40 UTC (permalink / raw)
To: nbd@nbd.name, lorenzo@kernel.org, pchelkin@ispras.ru
Cc: stable@vger.kernel.org, Shayne Chen (陳軒丞),
jdamato@fastly.com, Ryder Lee, AngeloGioacchino Del Regno,
linux-kernel@vger.kernel.org, linux-wireless@vger.kernel.org,
Sean Wang, linux-arm-kernel@lists.infradead.org,
matthias.bgg@gmail.com, linux-mediatek@lists.infradead.org,
lvc-project@linuxtesting.org, edumazet@google.com,
kuba@kernel.org
On Tue, 2025-05-06 at 14:55 +0300, Fedor Pchelkin wrote:
> A warning on driver removal started occurring after commit
> 9dd05df8403b
> ("net: warn if NAPI instance wasn't shut down"). Disable tx napi
> before
> deleting it in mt76_dma_cleanup().
>
> WARNING: CPU: 4 PID: 18828 at net/core/dev.c:7288
> __netif_napi_del_locked+0xf0/0x100
> CPU: 4 UID: 0 PID: 18828 Comm: modprobe Not tainted 6.15.0-rc4 #4
> PREEMPT(lazy)
> Hardware name: ASUS System Product Name/PRIME X670E-PRO WIFI, BIOS
> 3035 09/05/2024
> RIP: 0010:__netif_napi_del_locked+0xf0/0x100
> Call Trace:
> <TASK>
> mt76_dma_cleanup+0x54/0x2f0 [mt76]
> mt7921_pci_remove+0xd5/0x190 [mt7921e]
> pci_device_remove+0x47/0xc0
> device_release_driver_internal+0x19e/0x200
> driver_detach+0x48/0x90
> bus_remove_driver+0x6d/0xf0
> pci_unregister_driver+0x2e/0xb0
> __do_sys_delete_module.isra.0+0x197/0x2e0
> do_syscall_64+0x7b/0x160
> entry_SYSCALL_64_after_hwframe+0x76/0x7e
>
> Tested with mt7921e but the same pattern can be actually applied to
> other
> mt76 drivers calling mt76_dma_cleanup() during removal. Tx napi is
> enabled
> in their *_dma_init() functions and only toggled off and on again
> inside
> their suspend/resume/reset paths. So it should be okay to disable tx
> napi in such a generic way.
>
> Found by Linux Verification Center (linuxtesting.org).
>
> Fixes: 2ac515a5d74f ("mt76: mt76x02: use napi polling for tx
> cleanup")
> Cc: stable@vger.kernel.org
> Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
> ---
> drivers/net/wireless/mediatek/mt76/dma.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/net/wireless/mediatek/mt76/dma.c
> b/drivers/net/wireless/mediatek/mt76/dma.c
> index 844af16ee551..35b4ec91979e 100644
> --- a/drivers/net/wireless/mediatek/mt76/dma.c
> +++ b/drivers/net/wireless/mediatek/mt76/dma.c
> @@ -1011,6 +1011,7 @@ void mt76_dma_cleanup(struct mt76_dev *dev)
> int i;
>
> mt76_worker_disable(&dev->tx_worker);
> + napi_disable(&dev->tx_napi);
> netif_napi_del(&dev->tx_napi);
>
> for (i = 0; i < ARRAY_SIZE(dev->phys); i++) {
Tested-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-05-12 5:40 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-06 11:55 [PATCH] wifi: mt76: disable napi on driver removal Fedor Pchelkin
2025-05-12 5:40 ` Mingyen Hsieh (謝明諺)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).