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