Subject: Re: [PATCH v4 9/9] vsock/virtio: Allocate nonlinear SKBs for handling large transmit buffers

From: "Michael S. Tsirkin" <[email-masked]>
Date: Fri, 15 Aug 2025 06:22:56 -0400

On Wed, Aug 13, 2025 at 09:25:53PM +0800, Hillf Danton wrote:
> On Wed, 13 Aug 2025 04:41:09 -0400 "Michael S. Tsirkin" wrote:
> > On Thu, Jul 17, 2025 at 10:01:16AM +0100, Will Deacon wrote:
> > > When transmitting a vsock packet, virtio_transport_send_pkt_info() calls
> > > virtio_transport_alloc_linear_skb() to allocate and fill SKBs with the
> > > transmit data. Unfortunately, these are always linear allocations and
> > > can therefore result in significant pressure on kmalloc() considering
> > > that the maximum packet size (VIRTIO_VSOCK_MAX_PKT_BUF_SIZE +
> > > VIRTIO_VSOCK_SKB_HEADROOM) is a little over 64KiB, resulting in a 128KiB
> > > allocation for each packet.
> > > 
> > > Rework the vsock SKB allocation so that, for sizes with page order
> > > greater than PAGE_ALLOC_COSTLY_ORDER, a nonlinear SKB is allocated
> > > instead with the packet header in the SKB and the transmit data in the
> > > fragments. Note that this affects both the vhost and virtio transports.
> > > 
> > > Reviewed-by: Stefano Garzarella <[email-masked]>
> > > Signed-off-by: Will Deacon <[email-masked]>
> > 
> > So this caused a regression, see syzbot report:
> > 
> > https://lore.kernel.org/all/[email-masked]
> > 
> > I'm inclined to revert unless we have a fix quickly.
> > 
> Because recomputing skb len survived the syzbot test [1], Will looks innocent.
> 
> [1] https://lore.kernel.org/lkml/[email-masked]/

I'm not sure I follow that patch though. Do you mind submitting
with an explanation in the commit log?

-- 
MST