Re: [PATCH 1/1] ovpn: tcp - defer TX from softirq to workqueue

From: Jakub Kicinski

Date: Fri May 01 2026 - 19:13:24 EST


On Fri, 1 May 2026 22:54:25 +0800 Dao Zhong Ma wrote:
> ovpn_tcp_send_skb() holds sk->sk_lock.slock while performing the full TCP
> send in softirq context. This can hold the spinlock for a long time
> (large skb), blocking lock_sock() users. This can starve the RCU GP
> kthread and trigger RCU stalls warnings and hung tasks.
>
> Defer the TCP send operation to process context:
> - In interrupt context, only enqueue the skb under the spinlock
> schedule tcp_tx_work.
> - In process context, dequeue and flush the send queue under lock_sock()
>
> This reduces the softirq critical section to a short duration, allowing
> lock_sock() users to make progress and preventing RCU stalls.

This appears to break the ovpn selftests