> From: Jerome Mohm <[email protected]>
> 
> vsock_bpf_recvmsg() sends every read that cannot be served from the
> transport's own queue through sk_msg_recvmsg() and its wait loop. Three
> kinds of read do not fit that path:
> 
>  - len == 0: with data queued in the psock ingress queue (for example
>    after an SK_PASS verdict), sk_msg_recvmsg() copies nothing and
>    returns 0, and the wait reports data ready at once, so the loop spins
>    with lock_sock() held. The vsock delivery worker then blocks on the
>    same lock and all rx on the transport stops (hung-task).
>    tcp_bpf, udp_bpf and unix_bpf return 0 early, and
>    __vsock_connectible_recvmsg() handles len == 0 too.
> 
>  - MSG_ERRQUEUE: the read only reaches sock_recv_errqueue() when the
> [ ... ]
> sockmap_basic and the 240 AF_VSOCK 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=2


Reply via email to