* [PATCH net] net: lan969x: don't disable hardirqs in fdma tx clear
@ 2026-10-20 8:57 Daniel Machon
2026-10-22 0:30 ` patchwork-bot+netdevbpf
0 siblings, 1 reply; 2+ messages in thread
From: Daniel Machon @ 2026-10-20 8:57 UTC (permalink / raw)
To: UNGLinuxDriver, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Steen Hegelund
Cc: netdev, linux-arm-kernel, linux-kernel
lan969x_fdma_tx_clear_buf() runs from the NAPI poll and frees the skbs
of completed tx DCBs with napi_consume_skb(), under sparx5->tx_lock.
Before this patch, the lock is taken with spin_lock_irqsave(), so the
skbs are freed with hardirqs disabled. RX skbs are marked for page_pool
recycling, so when such an skb is forwarded back out and its tx
completion frees it here, the free path reaches __page_pool_put_page(),
which warns via lockdep_assert_no_hardirq().
Take tx_lock with a plain spin_lock(), as the only other tx_lock user,
sparx5_port_xmit_impl(), already does. tx_clear_buf() is only called
from softirq context, so disabling hardirqs is not needed.
Found with lockdep enabled (CONFIG_PROVE_LOCKING), which the assert
depends on. Reproduced on lan969x by redirecting received frames out of
another port with tc mirred.
Fixes: d84ad2c0d80c ("net: lan969x: add FDMA implementation")
Signed-off-by: Daniel Machon <daniel.machon@microchip.com>
---
drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c b/drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
index c7e0e58ff0f7..053d125eda65 100644
--- a/drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
+++ b/drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c
@@ -54,10 +54,9 @@ static void lan969x_fdma_tx_clear_buf(struct sparx5 *sparx5, int weight)
{
struct fdma *fdma = &sparx5->tx.fdma;
struct sparx5_tx_buf *db;
- unsigned long flags;
int i;
- spin_lock_irqsave(&sparx5->tx_lock, flags);
+ spin_lock(&sparx5->tx_lock);
for (i = 0; i < fdma->n_dcbs; ++i) {
db = &sparx5->tx.dbs[i];
@@ -83,7 +82,7 @@ static void lan969x_fdma_tx_clear_buf(struct sparx5 *sparx5, int weight)
db->used = false;
}
- spin_unlock_irqrestore(&sparx5->tx_lock, flags);
+ spin_unlock(&sparx5->tx_lock);
}
static void lan969x_fdma_free_pages(struct sparx5_rx *rx)
---
base-commit: 07bd391eb9572e74f073c49acef327611234f9bb
change-id: 20261019-lan969x-fdma-tx-clear-irq-d86877f96431
Best regards,
--
Daniel Machon <daniel.machon@microchip.com>
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH net] net: lan969x: don't disable hardirqs in fdma tx clear
2026-10-20 8:57 [PATCH net] net: lan969x: don't disable hardirqs in fdma tx clear Daniel Machon
@ 2026-10-22 0:30 ` patchwork-bot+netdevbpf
0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-10-22 0:30 UTC (permalink / raw)
To: Daniel Machon
Cc: UNGLinuxDriver, andrew+netdev, davem, edumazet, kuba, pabeni,
Steen.Hegelund, netdev, linux-arm-kernel, linux-kernel
Hello:
This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Tue, 20 Oct 2026 10:57:27 +0200 you wrote:
> lan969x_fdma_tx_clear_buf() runs from the NAPI poll and frees the skbs
> of completed tx DCBs with napi_consume_skb(), under sparx5->tx_lock.
>
> Before this patch, the lock is taken with spin_lock_irqsave(), so the
> skbs are freed with hardirqs disabled. RX skbs are marked for page_pool
> recycling, so when such an skb is forwarded back out and its tx
> completion frees it here, the free path reaches __page_pool_put_page(),
> which warns via lockdep_assert_no_hardirq().
>
> [...]
Here is the summary with links:
- [net] net: lan969x: don't disable hardirqs in fdma tx clear
https://git.kernel.org/netdev/net/c/9770818b8a92
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-22 0:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-20 8:57 [PATCH net] net: lan969x: don't disable hardirqs in fdma tx clear Daniel Machon
2026-10-22 0:30 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®