* [PATCH net v3] net: mctp: Fix tx queue stall
@ 2025-10-27 6:55 Jinliang Wang
2025-10-29 8:26 ` Jeremy Kerr
2025-10-30 1:00 ` patchwork-bot+netdevbpf
0 siblings, 2 replies; 3+ messages in thread
From: Jinliang Wang @ 2025-10-27 6:55 UTC (permalink / raw)
To: Jeremy Kerr, Matt Johnston, netdev
Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, linux-kernel, Jinliang Wang
The tx queue can become permanently stuck in a stopped state due to a
race condition between the URB submission path and its completion
callback.
The URB completion callback can run immediately after usb_submit_urb()
returns, before the submitting function calls netif_stop_queue(). If
this occurs, the queue state management becomes desynchronized, leading
to a stall where the queue is never woken.
Fix this by moving the netif_stop_queue() call to before submitting the
URB. This closes the race window by ensuring the network stack is aware
the queue is stopped before the URB completion can possibly run.
Fixes: 0791c0327a6e ("net: mctp: Add MCTP USB transport driver")
Signed-off-by: Jinliang Wang <jinliangw@google.com>
---
v3:
- target net tree, add fixes tag
v2:
- remove duplicate comment in commit message
---
drivers/net/mctp/mctp-usb.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/net/mctp/mctp-usb.c b/drivers/net/mctp/mctp-usb.c
index 36ccc53b1797..ef860cfc629f 100644
--- a/drivers/net/mctp/mctp-usb.c
+++ b/drivers/net/mctp/mctp-usb.c
@@ -96,11 +96,13 @@ static netdev_tx_t mctp_usb_start_xmit(struct sk_buff *skb,
skb->data, skb->len,
mctp_usb_out_complete, skb);
+ /* Stops TX queue first to prevent race condition with URB complete */
+ netif_stop_queue(dev);
rc = usb_submit_urb(urb, GFP_ATOMIC);
- if (rc)
+ if (rc) {
+ netif_wake_queue(dev);
goto err_drop;
- else
- netif_stop_queue(dev);
+ }
return NETDEV_TX_OK;
--
2.51.1.821.gb6fe4d2222-goog
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH net v3] net: mctp: Fix tx queue stall
2025-10-27 6:55 [PATCH net v3] net: mctp: Fix tx queue stall Jinliang Wang
@ 2025-10-29 8:26 ` Jeremy Kerr
2025-10-30 1:00 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: Jeremy Kerr @ 2025-10-29 8:26 UTC (permalink / raw)
To: Jinliang Wang, Matt Johnston, netdev
Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, linux-kernel
Hi Jinliang,
> The tx queue can become permanently stuck in a stopped state due to a
> race condition between the URB submission path and its completion
> callback.
>
> The URB completion callback can run immediately after usb_submit_urb()
> returns, before the submitting function calls netif_stop_queue(). If
> this occurs, the queue state management becomes desynchronized, leading
> to a stall where the queue is never woken.
>
> Fix this by moving the netif_stop_queue() call to before submitting the
> URB. This closes the race window by ensuring the network stack is aware
> the queue is stopped before the URB completion can possibly run.
Thanks!
Acked-by: Jeremy Kerr <jk@codeconstruct.com.au>
Cheers,
Jeremy
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net v3] net: mctp: Fix tx queue stall
2025-10-27 6:55 [PATCH net v3] net: mctp: Fix tx queue stall Jinliang Wang
2025-10-29 8:26 ` Jeremy Kerr
@ 2025-10-30 1:00 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-10-30 1:00 UTC (permalink / raw)
To: Jinliang Wang
Cc: jk, matt, netdev, andrew+netdev, davem, edumazet, kuba, pabeni,
linux-kernel
Hello:
This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Sun, 26 Oct 2025 23:55:30 -0700 you wrote:
> The tx queue can become permanently stuck in a stopped state due to a
> race condition between the URB submission path and its completion
> callback.
>
> The URB completion callback can run immediately after usb_submit_urb()
> returns, before the submitting function calls netif_stop_queue(). If
> this occurs, the queue state management becomes desynchronized, leading
> to a stall where the queue is never woken.
>
> [...]
Here is the summary with links:
- [net,v3] net: mctp: Fix tx queue stall
https://git.kernel.org/netdev/net/c/da2522df3fcc
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] 3+ messages in thread
end of thread, other threads:[~2025-10-30 1:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-10-27 6:55 [PATCH net v3] net: mctp: Fix tx queue stall Jinliang Wang
2025-10-29 8:26 ` Jeremy Kerr
2025-10-30 1:00 ` 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®