Soft lockup when posting skb to IP stack from multiple kernel

From: Ayushi Kumar <hidden>
Date: 2025-08-05 10:26:59

Hi all,

I’m working on a custom kernel module on Linux v6.6.54. Packets are
received from Broadcom KNET via a callback and passed into my kernel
module. From there, the packets are posted to a kernel queue, which is
consumed by a kernel thread. Based on the type of packet, the thread
either sends the skb to userspace or posts it to the IP stack.

Everything works fine when there’s only one thread handling this logic.

However, when I introduce multiple kernel threads (to handle different
categories of packets), I start seeing soft lockups — specifically
when the threads post packets to the IP stack.

Interestingly, when the packets are only sent to userspace (and not to
the IP stack), no issues are observed, even with multiple threads.

For posting to the IP stack, I’m currently using netif_rx().
I tried using netif_receive_skb() instead but still saw the same issue.

Any insights or suggestions on how to avoid the soft lockup in this
scenario would be appreciated.

Thanks,
Ayushi
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help