Re: [PATCH v2 5/8] vsock/virtio: Add vsock helper for linear SKB allocation
From: Stefano Garzarella <sgarzare@redhat.com>
Date: 2025-07-02 16:40:50
Also in:
lkml, virtualization
On Tue, Jul 01, 2025 at 05:45:04PM +0100, Will Deacon wrote:
quoted hunk ↗ jump to hunk
In preparation for nonlinear allocations for large SKBs, introduce a new virtio_vsock_alloc_linear_skb() helper to return linear SKBs unconditionally and switch all callers over to this new interface for now. No functional change. Signed-off-by: Will Deacon <will@kernel.org> --- drivers/vhost/vsock.c | 2 +- include/linux/virtio_vsock.h | 6 ++++++ net/vmw_vsock/virtio_transport.c | 2 +- net/vmw_vsock/virtio_transport_common.c | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-)diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c index 66a0f060770e..b13f6be452ba 100644 --- a/drivers/vhost/vsock.c +++ b/drivers/vhost/vsock.c@@ -348,7 +348,7 @@ vhost_vsock_alloc_skb(struct vhost_virtqueue *vq,return NULL; /* len contains both payload and hdr */ - skb = virtio_vsock_alloc_skb(len, GFP_KERNEL); + skb = virtio_vsock_alloc_linear_skb(len, GFP_KERNEL); if (!skb) return NULL;diff --git a/include/linux/virtio_vsock.h b/include/linux/virtio_vsock.h index 1b5731186095..6d4a933c895a 100644 --- a/include/linux/virtio_vsock.h +++ b/include/linux/virtio_vsock.h@@ -70,6 +70,12 @@ static inline struct sk_buff *virtio_vsock_alloc_skb(unsigned int size, gfp_t mareturn skb; } +static inline struct sk_buff * +virtio_vsock_alloc_linear_skb(unsigned int size, gfp_t mask) +{ + return virtio_vsock_alloc_skb(size, mask);
Why not just renaming virtio_vsock_alloc_skb in this patch? In that way we are sure when building this patch we don't leave any "old" virtio_vsock_alloc_skb() around. Thanks, Stefano
quoted hunk ↗ jump to hunk
+} + static inline void virtio_vsock_skb_queue_head(struct sk_buff_head *list, struct sk_buff *skb) {diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c index 3daba06ed499..2959db0404ed 100644 --- a/net/vmw_vsock/virtio_transport.c +++ b/net/vmw_vsock/virtio_transport.c@@ -321,7 +321,7 @@ static void virtio_vsock_rx_fill(struct virtio_vsock *vsock)vq = vsock->vqs[VSOCK_VQ_RX]; do { - skb = virtio_vsock_alloc_skb(total_len, GFP_KERNEL); + skb = virtio_vsock_alloc_linear_skb(total_len, GFP_KERNEL); if (!skb) break;diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c index 1b5d9896edae..c9eb7f7ac00d 100644 --- a/net/vmw_vsock/virtio_transport_common.c +++ b/net/vmw_vsock/virtio_transport_common.c@@ -261,7 +261,7 @@ static struct sk_buff *virtio_transport_alloc_skb(struct virtio_vsock_pkt_info *if (!zcopy) skb_len += payload_len; - skb = virtio_vsock_alloc_skb(skb_len, GFP_KERNEL); + skb = virtio_vsock_alloc_linear_skb(skb_len, GFP_KERNEL); if (!skb) return NULL; -- 2.50.0.727.gbf7dc18ff4-goog