Re: [PATCH net v5] vsock/bpf: release sock lock while waiting for data in recvmsg

From: Stefano Garzarella

Date: Thu Nov 12 2026 - 17:14:16 EST


On Thu, Nov 12, 2026 at 07:47:11PM +0000, jrmmhm.kernel@xxxxxxxxx wrote:
On Thu, Nov 12, 2026 at 06:23:00PM +0100, Stefano Garzarella wrote:
On Mon, Nov 09, 2026 at 09:08:29PM +0100, Jerome Mohm via B4 Relay
wrote:
The loop
and the zero-length check belong to the fix (without them the reader
returns early or spins with the lock held), so this is one patch;

I don't understand why that fix can't be in a fist patch of the
series...

+ if (unlikely(!len || (flags & (MSG_OOB | MSG_ERRQUEUE))))
+ return __vsock_recvmsg(sk, msg, len, flags);

... I mean, why this change ^^^ can't be in patch 1/2?

BTW I'm not asking to split it (at least for now).

It can: the loop is needed for the deadlock fix, since without it the
reader returns -EAGAIN early when it wakes without data, but the early
return isn't. A zero-length read with data in the psock queue already
spins with the lock held on net, and as far as I can tell from the code
the early return alone fixes that, plus the MSG_OOB and MSG_ERRQUEUE
cases. In v4 those reads were patch 2/2. They went into one patch only
because Alexei's diff replaced both, and my v5 sentence justified that
badly. You said you're not asking for a split, but since the early
return isn't needed for the deadlock, it would fit as its own patch:
should v6 have it as 1/2 and the lock change as 2/2, or stay one patch?

Yeah, I'd prefer 2 patches with this change as first patch.


I saw some comments from sashiko, can you reply to them?

I'll wait for your answer before sending v6, and I'm replying to the
Sashiko comments separately.

Great, thanks for that!

Stefano