> 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
