> From: Jerome Mohm <[email protected]>
> 
> vsock_bpf_recvmsg() takes lock_sock(sk) and holds it across the receive
> loop, including vsock_msg_wait_data(), which sleeps in wait_woken()
> without dropping the lock. When data arrives, the transport's delivery
> context (the vsock-loopback worker, or the virtio/vhost rx path) calls
> virtio_transport_recv_pkt() -> lock_sock() on the same socket and blocks.
> That context is the only one that would queue the skb and wake the
> reader, so neither side makes progress: a blocking recv() hangs until a
> signal arrives or SO_RCVTIMEO expires, and meanwhile the shared delivery
> worker is stalled, so all vsock rx on that transport stops. The
> hung-task watchdog reports the worker:
> 
>   INFO: task kworker/1:3:107 blocked for more than 5 seconds.
>   task:kworker/1:3 state:D Workqueue: vsock-loopback vsock_loopback_work
> [ ... ]
> cases of sockmap_redir).
> 
> Fixes: 634f1a7110b4 ("vsock: support sockmap")
> Cc: [email protected]
> Signed-off-by: Jerome Mohm <[email protected]>

Sashiko has reviewed this patch and found no issues.

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/[email protected]?part=1


Reply via email to