All of lore.kernel.org
 help / color / mirror / Atom feed
From: Will Deacon <will@kernel.org>
To: linux-kernel@vger.kernel.org
Cc: "Will Deacon" <will@kernel.org>, "Keir Fraser" <keirf@google.com>,
	"Steven Moreland" <smoreland@google.com>,
	"Frederick Mayle" <fmayle@google.com>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Stefano Garzarella" <sgarzare@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Jason Wang" <jasowang@redhat.com>,
	"Eugenio Pérez" <eperezma@redhat.com>,
	netdev@vger.kernel.org, virtualization@lists.linux.dev
Subject: [PATCH v2 3/8] vsock/virtio: Move length check to callers of virtio_vsock_skb_rx_put()
Date: Tue,  1 Jul 2025 17:45:02 +0100	[thread overview]
Message-ID: <20250701164507.14883-4-will@kernel.org> (raw)
In-Reply-To: <20250701164507.14883-1-will@kernel.org>

virtio_vsock_skb_rx_put() only calls skb_put() if the length in the
packet header is not zero even though skb_put() handles this case
gracefully.

Remove the functionally redundant check from virtio_vsock_skb_rx_put()
and, on the assumption that this is a worthwhile optimisation for
handling credit messages, augment the existing length checks in
virtio_transport_rx_work() to elide the call for zero-length payloads.
Note that the vhost code already has similar logic in
vhost_vsock_alloc_skb().

Signed-off-by: Will Deacon <will@kernel.org>
---
 include/linux/virtio_vsock.h     | 4 +---
 net/vmw_vsock/virtio_transport.c | 4 +++-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/linux/virtio_vsock.h b/include/linux/virtio_vsock.h
index 36fb3edfa403..eb6980aa19fd 100644
--- a/include/linux/virtio_vsock.h
+++ b/include/linux/virtio_vsock.h
@@ -52,9 +52,7 @@ static inline void virtio_vsock_skb_rx_put(struct sk_buff *skb)
 	u32 len;
 
 	len = le32_to_cpu(virtio_vsock_hdr(skb)->len);
-
-	if (len > 0)
-		skb_put(skb, len);
+	skb_put(skb, len);
 }
 
 static inline struct sk_buff *virtio_vsock_alloc_skb(unsigned int size, gfp_t mask)
diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transport.c
index bd2c6aaa1a93..488e6ddc6ffa 100644
--- a/net/vmw_vsock/virtio_transport.c
+++ b/net/vmw_vsock/virtio_transport.c
@@ -656,7 +656,9 @@ static void virtio_transport_rx_work(struct work_struct *work)
 				continue;
 			}
 
-			virtio_vsock_skb_rx_put(skb);
+			if (payload_len)
+				virtio_vsock_skb_rx_put(skb);
+
 			virtio_transport_deliver_tap_pkt(skb);
 			virtio_transport_recv_pkt(&virtio_transport, skb);
 		}
-- 
2.50.0.727.gbf7dc18ff4-goog


  parent reply	other threads:[~2025-07-01 16:45 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-01 16:44 [PATCH v2 0/8] vsock/virtio: SKB allocation improvements Will Deacon
2025-07-01 16:45 ` [PATCH v2 1/8] vhost/vsock: Avoid allocating arbitrarily-sized SKBs Will Deacon
2025-07-01 16:45 ` [PATCH v2 2/8] vsock/virtio: Validate length in packet header before skb_put() Will Deacon
2025-07-01 16:45 ` Will Deacon [this message]
2025-07-02 16:28   ` [PATCH v2 3/8] vsock/virtio: Move length check to callers of virtio_vsock_skb_rx_put() Stefano Garzarella
2025-07-13 21:26     ` Will Deacon
2025-07-01 16:45 ` [PATCH v2 4/8] vsock/virtio: Resize receive buffers so that each SKB fits in a page Will Deacon
2025-07-01 19:14   ` David Laight
2025-07-02 13:16     ` Stefano Garzarella
2025-07-13 21:26       ` Will Deacon
2025-07-01 16:45 ` [PATCH v2 5/8] vsock/virtio: Add vsock helper for linear SKB allocation Will Deacon
2025-07-02 16:40   ` Stefano Garzarella
2025-07-13 21:26     ` Will Deacon
2025-07-01 16:45 ` [PATCH v2 6/8] vhost/vsock: Allocate nonlinear SKBs for handling large receive buffers Will Deacon
2025-07-02 16:50   ` Stefano Garzarella
2025-07-13 21:37     ` Will Deacon
2025-07-01 16:45 ` [PATCH v2 7/8] vsock/virtio: Rename virtio_vsock_skb_rx_put() to virtio_vsock_skb_put() Will Deacon
2025-07-01 16:45 ` [PATCH v2 8/8] vsock/virtio: Allocate nonlinear SKBs for handling large transmit buffers Will Deacon
2025-07-02 16:52   ` Stefano Garzarella
2025-07-04  9:50 ` [PATCH v2 0/8] vsock/virtio: SKB allocation improvements Lei Yang
2025-07-13 20:18   ` Will Deacon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250701164507.14883-4-will@kernel.org \
    --to=will@kernel.org \
    --cc=eperezma@redhat.com \
    --cc=fmayle@google.com \
    --cc=jasowang@redhat.com \
    --cc=keirf@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=sgarzare@redhat.com \
    --cc=smoreland@google.com \
    --cc=stefanha@redhat.com \
    --cc=virtualization@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.