> 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
