* RE: [REGRESSION 6.12.90 -> 6.12.94] vsock/virtio: large AF_VSOCK transfers reset under backpressure [not found] ` <ajkAlpiyPWmNPWfx@sgarzare-redhat> @ 2026-06-22 11:55 ` Brien Oberstein 2026-06-22 12:22 ` Stefano Garzarella 0 siblings, 1 reply; 3+ messages in thread From: Brien Oberstein @ 2026-06-22 11:55 UTC (permalink / raw) To: 'Stefano Garzarella'; +Cc: netdev, regressions, stable Hi Stefano, Thanks, that matches what I'm seeing: large transfers reset mid-stream instead of the sender being throttled (reliable above ~1.5 MB, fine below ~90 KB). The bind for me: it's not just this mail bridge -- I use AF_VSOCK for a few host/guest services, some of which open their own sockets, so the per-socket buffer workaround can't cover them all. That leaves pinning 6.12.90 (losing the DoS fix and further kernel updates) as the only blanket option. A few quick questions: 1. Is a -stable backport of the merging fix likely, and roughly when? 2. Could a smaller interim land in -stable sooner (e.g. more default headroom) without reopening the DoS? 3. Will the fix guarantee backpressure for any packet size, or just widen the margin? Happy to test any patch -- I have a solid reproducer and can turn it around in a day. I'll also file this as a tracked regression so it's not lost. Thanks again, Brien #regzbot introduced: v6.12.90..v6.12.94 -----Original Message----- From: Stefano Garzarella <sgarzare@redhat.com> Sent: Monday, June 22, 2026 6:08 AM To: Brien Oberstein <brienpub@gmail.com> Cc: edumazet@google.com Subject: Re: [REGRESSION 6.12.90 -> 6.12.94] vsock/virtio: large AF_VSOCK transfers reset under backpressure On Sun, Jun 21, 2026 at 08:42:41AM -0400, Brien Oberstein wrote: >Hi Stefano, Eric, Hi Brien, > >I'm hitting a regression in the 6.12.y stable series: a bulk transfer >over >AF_VSOCK is torn down mid-stream once the message is large enough to >exercise receiver-side backpressure. By stable version it lands on >6.12.94; 6.12.90 is fine. > >Setup >----- >A host process mails a guest's postfix over an AF_VSOCK bridge: > > host msmtp --(unix sock)--> socat --(AF_VSOCK: host CID 2 -> > guest CID 101, port 20025)--> [guest] socat --(TCP 127.0.0.1:25)--> > postfix > >postfix (TLS-terminating, then writing to its queue) drains the stream >slower than the host writes it, so the per-socket vsock buffer fills >during a large message. > >Symptom (guest, 6.12.94) >------------------------ >The guest-side socat exits status=1 mid-transfer and postfix logs: > > postfix/smtpd: NNN: lost connection after DATA (153330 bytes) > from localhost[127.0.0.1] > postfix/smtpd: disconnect ... data=0/1 commands=5/6 > >On the host, msmtp reports: > > msmtp: cannot write to TLS connection: The TLS connection was > non-properly terminated. (sendmail exit 74 / EX_TEMPFAIL) > >So the AF_VSOCK connection is dropped while data is still flowing, rather >than the sender being throttled by the credit-based flow control. > >Reproduction >------------ >Send messages of increasing size through the bridge: > > body <= ~88 KB : always succeeds > body ~354 KB : intermittent failure > body >= 1.5 MB : fails 12/12 > >On 6.12.90 the identical test passes 20/20, including 1.5 MB x12, >2.4 MB x3, 4 MB x3 and 8 MB x2. The only variable is the guest kernel. > >Bisection >--------- >6.12.91, .92 and .93 carry no vsock changes. 6.12.94 pulled in three >vsock/virtio commits: > > 1eca304f vsock/virtio: fix potential unbounded skb queue > f3bf0f3b vsock/virtio: fix skb overhead accounting to preserve > full buf_alloc > 149205a1 vsock/virtio: fix skb overhead overflow on 32-bit builds > >The behaviour (drop/reset under a fast sender + slow receiver instead of >applying backpressure) makes 1eca304f the prime suspect, but I have only >A/B tested whole stable releases, not the individual commits. Yep, I'm working on a followup to improve the status. Basically, the memory management in AF_VSOCK has always been broken. The patches you mentioned are designed to prevent one peer from consuming all of the other peer’s memory. Instead of counting only the payload bytes, we now also take the packet metadata into account, using a socket buffer that is double the size set (default 256 KB). So if your system is sending small packets, then this is likely hitting this issue. My advice for now is to increase the socket buffer size. Thanks to VMware, AF_VSOCK have specific sockopts :-(: - SO_VM_SOCKETS_BUFFER_SIZE (0) - SO_VM_SOCKETS_BUFFER_MAX_SIZE (2) I suggest to set both to 16 MB (MAX should be set first). I tried this with socat and seems to work: socat VSOCK-LISTEN:4242,setsockopt=40:2:x0000000001000000,setsockopt=40:0:x0000000001000000 Hope this helps. In the mean time, I'm working on a follow-up for net-next to ensure that packets are merged when we exceed a threshold; we might be able to backport this to stable, but I'm not sure. Thanks, Stefano ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [REGRESSION 6.12.90 -> 6.12.94] vsock/virtio: large AF_VSOCK transfers reset under backpressure 2026-06-22 11:55 ` [REGRESSION 6.12.90 -> 6.12.94] vsock/virtio: large AF_VSOCK transfers reset under backpressure Brien Oberstein @ 2026-06-22 12:22 ` Stefano Garzarella 2026-06-22 17:48 ` Brien Oberstein 0 siblings, 1 reply; 3+ messages in thread From: Stefano Garzarella @ 2026-06-22 12:22 UTC (permalink / raw) To: Brien Oberstein; +Cc: netdev, regressions, stable On Mon, Jun 22, 2026 at 07:55:30AM -0400, Brien Oberstein wrote: >Hi Stefano, > >Thanks, that matches what I'm seeing: large transfers reset mid-stream >instead of the sender being throttled (reliable above ~1.5 MB, fine below >~90 KB). > >The bind for me: it's not just this mail bridge -- I use AF_VSOCK for a few >host/guest services, some of which open their own sockets, so the per-socket >buffer workaround can't cover them all. That leaves pinning 6.12.90 (losing >the DoS fix and further kernel updates) as the only blanket option. Okay, but in that case did it work? > >A few quick questions: > >1. Is a -stable backport of the merging fix likely, and roughly when? We don't have a fix yet. >2. Could a smaller interim land in -stable sooner (e.g. more default > headroom) without reopening the DoS? What we've merged so far is the best we can do for now, but anyone who wants to help improve the situation is welcome to submit patches. >3. Will the fix guarantee backpressure for any packet size, or just widen > the margin? It should fix STREAM sockets for any packet size. SEQPACKET/DGRAM is a bit different since we need to keep boundaries, so it will come later if needed. > >Happy to test any patch THanks, I'll ask you to test. >I have a solid reproducer and can turn it around >in a day. I'll also file this as a tracked regression so it's not lost. Unfortunately, it's always been partially broken, using more memory than specified, so I don't know if this is actually a full regression, but I understand. Thanks, Stefano ^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [REGRESSION 6.12.90 -> 6.12.94] vsock/virtio: large AF_VSOCK transfers reset under backpressure 2026-06-22 12:22 ` Stefano Garzarella @ 2026-06-22 17:48 ` Brien Oberstein 0 siblings, 0 replies; 3+ messages in thread From: Brien Oberstein @ 2026-06-22 17:48 UTC (permalink / raw) To: 'Stefano Garzarella'; +Cc: netdev, regressions, stable Hi Stefano, Confirmed -- the 16 MB buffer fixes it: with socat owning the VSOCK-LISTEN and SO_VM_SOCKETS_BUFFER_MAX_SIZE/SIZE at 16 MB, a 6.12.94 guest passed 21/21 large transfers (1.5 MB x12 through 8 MB); the same 1.5 MB payload failed every time without it. So the per-socket workaround covers the bridges whose listen I control, but not vsock services I can't reconfigure, which stay broken on 6.12.94. Agreed the old behaviour was buggy in its own right -- it was over-allocating past the advertised buffer. The practical effect for me is just that a config that worked on 6.12.90 no longer does on 6.12.94. A question mainly for stable@: until the merging work lands, would an interim be acceptable -- something that keeps ordinary small-packet workloads under the limit without reopening the DoS? I don't have the kernel-side expertise to judge what's safe there, but I'm glad to prepare and test whatever interim you think is right, and to test the merging patch when it's ready. Thanks, Brien -----Original Message----- From: Stefano Garzarella <sgarzare@redhat.com> Sent: Monday, June 22, 2026 8:22 AM To: Brien Oberstein <brienpub@gmail.com> Cc: netdev@vger.kernel.org; regressions@lists.linux.dev; stable@vger.kernel.org Subject: Re: [REGRESSION 6.12.90 -> 6.12.94] vsock/virtio: large AF_VSOCK transfers reset under backpressure On Mon, Jun 22, 2026 at 07:55:30AM -0400, Brien Oberstein wrote: >Hi Stefano, > >Thanks, that matches what I'm seeing: large transfers reset mid-stream >instead of the sender being throttled (reliable above ~1.5 MB, fine below >~90 KB). > >The bind for me: it's not just this mail bridge -- I use AF_VSOCK for a few >host/guest services, some of which open their own sockets, so the per-socket >buffer workaround can't cover them all. That leaves pinning 6.12.90 (losing >the DoS fix and further kernel updates) as the only blanket option. Okay, but in that case did it work? > >A few quick questions: > >1. Is a -stable backport of the merging fix likely, and roughly when? We don't have a fix yet. >2. Could a smaller interim land in -stable sooner (e.g. more default > headroom) without reopening the DoS? What we've merged so far is the best we can do for now, but anyone who wants to help improve the situation is welcome to submit patches. >3. Will the fix guarantee backpressure for any packet size, or just widen > the margin? It should fix STREAM sockets for any packet size. SEQPACKET/DGRAM is a bit different since we need to keep boundaries, so it will come later if needed. > >Happy to test any patch THanks, I'll ask you to test. >I have a solid reproducer and can turn it around >in a day. I'll also file this as a tracked regression so it's not lost. Unfortunately, it's always been partially broken, using more memory than specified, so I don't know if this is actually a full regression, but I understand. Thanks, Stefano ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-06-22 17:48 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <467b01dd017b$733792d0$59a6b870$@gmail.com>
[not found] ` <ajkAlpiyPWmNPWfx@sgarzare-redhat>
2026-06-22 11:55 ` [REGRESSION 6.12.90 -> 6.12.94] vsock/virtio: large AF_VSOCK transfers reset under backpressure Brien Oberstein
2026-06-22 12:22 ` Stefano Garzarella
2026-06-22 17:48 ` Brien Oberstein
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox