Netdev List
 help / color / mirror / Atom feed
* [PATCH net-next v3 0/4] vsock: consolidate acceptq accounting into core helpers
@ 2026-06-12  4:52 Raf Dickson
  2026-06-12  4:52 ` [PATCH net-next v3 1/4] vsock: introduce vsock_pending_to_accept() helper Raf Dickson
                   ` (3 more replies)
  0 siblings, 4 replies; 17+ messages in thread
From: Raf Dickson @ 2026-06-12  4:52 UTC (permalink / raw)
  To: netdev, virtualization
  Cc: pabeni, sgarzare, stefanha, bryan-bt.tan, vishnu.dasa,
	bcm-kernel-feedback-list, bobbyeshleman, leonardi, horms,
	edumazet, kuba, Raf Dickson

These patches follow up on commit c05fa14db43e
("vsock/vmci: fix sk_ack_backlog leak on failed handshake")
by consolidating sk_acceptq_added() and sk_acceptq_removed() into
the core vsock helpers so transports cannot forget them.

Changes since v2:
  - Add vsock_pending_to_accept() helper for the vmci pending->accept
    transition, avoiding a double sk_acceptq_added() (Stefano Garzarella)
  - Split into 4 patches for bisectability (Stefano Garzarella)
  - Fold sk_acceptq_added() into vsock_add_pending() as a separate patch

Link: https://lore.kernel.org/netdev/20260611021317.69362-1-rafdog35@gmail.com/

Raf Dickson (4):
  vsock: introduce vsock_pending_to_accept() helper
  vsock: fold sk_acceptq_added() into vsock_add_pending()
  vsock: fold sk_acceptq_added() into vsock_enqueue_accept()
  vsock: fold sk_acceptq_removed() into vsock_remove_pending()

 include/net/af_vsock.h                  |  1 +
 net/vmw_vsock/af_vsock.c                | 14 +++++++++++++-
 net/vmw_vsock/hyperv_transport.c        |  1 -
 net/vmw_vsock/virtio_transport_common.c |  1 -
 net/vmw_vsock/vmci_transport.c          |  8 ++------
 5 files changed, 16 insertions(+), 9 deletions(-)

-- 
2.54.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH net-next v3 1/4] vsock: introduce vsock_pending_to_accept() helper
  2026-06-12  4:52 [PATCH net-next v3 0/4] vsock: consolidate acceptq accounting into core helpers Raf Dickson
@ 2026-06-12  4:52 ` Raf Dickson
  2026-06-12 10:41   ` Stefano Garzarella
                     ` (2 more replies)
  2026-06-12  4:52 ` [PATCH net-next v3 2/4] vsock: fold sk_acceptq_added() into vsock_add_pending() Raf Dickson
                   ` (2 subsequent siblings)
  3 siblings, 3 replies; 17+ messages in thread
From: Raf Dickson @ 2026-06-12  4:52 UTC (permalink / raw)
  To: netdev, virtualization
  Cc: pabeni, sgarzare, stefanha, bryan-bt.tan, vishnu.dasa,
	bcm-kernel-feedback-list, bobbyeshleman, leonardi, horms,
	edumazet, kuba, Raf Dickson

Add vsock_pending_to_accept() to move a socket directly from the
pending list to the accept queue in a single operation, avoiding
the sock_put/sock_hold dance and the sk_acceptq_removed()/
sk_acceptq_added() pair that would otherwise be needed when
calling vsock_remove_pending() followed by vsock_enqueue_accept().

Use it in vmci_transport_recv_connecting_server() where a completed
handshake transitions the socket from pending to accept queue.

Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Raf Dickson <rafdog35@gmail.com>
---
 include/net/af_vsock.h         |  1 +
 net/vmw_vsock/af_vsock.c       | 10 ++++++++++
 net/vmw_vsock/vmci_transport.c |  3 +--
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/include/net/af_vsock.h b/include/net/af_vsock.h
index 4e40063ada..30046a3c20 100644
--- a/include/net/af_vsock.h
+++ b/include/net/af_vsock.h
@@ -220,6 +220,7 @@ static inline bool __vsock_in_connected_table(struct vsock_sock *vsk)
 void vsock_add_pending(struct sock *listener, struct sock *pending);
 void vsock_remove_pending(struct sock *listener, struct sock *pending);
 void vsock_enqueue_accept(struct sock *listener, struct sock *connected);
+void vsock_pending_to_accept(struct sock *listener, struct sock *pending);
 void vsock_insert_connected(struct vsock_sock *vsk);
 void vsock_remove_bound(struct vsock_sock *vsk);
 void vsock_remove_connected(struct vsock_sock *vsk);
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
index 2ce1063d4a..1f94f0d44c 100644
--- a/net/vmw_vsock/af_vsock.c
+++ b/net/vmw_vsock/af_vsock.c
@@ -496,6 +496,16 @@ void vsock_remove_pending(struct sock *listener, struct sock *pending)
 }
 EXPORT_SYMBOL_GPL(vsock_remove_pending);
 
+void vsock_pending_to_accept(struct sock *listener, struct sock *pending)
+{
+	struct vsock_sock *vpending = vsock_sk(pending);
+	struct vsock_sock *vlistener = vsock_sk(listener);
+
+	list_del_init(&vpending->pending_links);
+	list_add_tail(&vpending->accept_queue, &vlistener->accept_queue);
+}
+EXPORT_SYMBOL_GPL(vsock_pending_to_accept);
+
 void vsock_enqueue_accept(struct sock *listener, struct sock *connected)
 {
 	struct vsock_sock *vlistener;
diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c
index 91516488a7..635ebf9da4 100644
--- a/net/vmw_vsock/vmci_transport.c
+++ b/net/vmw_vsock/vmci_transport.c
@@ -1258,8 +1258,7 @@ vmci_transport_recv_connecting_server(struct sock *listener,
 	 * listener's pending list to the accept queue so callers of accept()
 	 * can find it.
 	 */
-	vsock_remove_pending(listener, pending);
-	vsock_enqueue_accept(listener, pending);
+	vsock_pending_to_accept(listener, pending);
 
 	/* Callers of accept() will be waiting on the listening socket, not
 	 * the pending socket.
-- 
2.54.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH net-next v3 2/4] vsock: fold sk_acceptq_added() into vsock_add_pending()
  2026-06-12  4:52 [PATCH net-next v3 0/4] vsock: consolidate acceptq accounting into core helpers Raf Dickson
  2026-06-12  4:52 ` [PATCH net-next v3 1/4] vsock: introduce vsock_pending_to_accept() helper Raf Dickson
@ 2026-06-12  4:52 ` Raf Dickson
  2026-06-12 10:42   ` Stefano Garzarella
                     ` (2 more replies)
  2026-06-12  4:52 ` [PATCH net-next v3 3/4] vsock: fold sk_acceptq_added() into vsock_enqueue_accept() Raf Dickson
  2026-06-12  4:52 ` [PATCH net-next v3 4/4] vsock: fold sk_acceptq_removed() into vsock_remove_pending() Raf Dickson
  3 siblings, 3 replies; 17+ messages in thread
From: Raf Dickson @ 2026-06-12  4:52 UTC (permalink / raw)
  To: netdev, virtualization
  Cc: pabeni, sgarzare, stefanha, bryan-bt.tan, vishnu.dasa,
	bcm-kernel-feedback-list, bobbyeshleman, leonardi, horms,
	edumazet, kuba, Raf Dickson

Move sk_acceptq_added() into vsock_add_pending() so callers cannot
forget it. vmci is the only transport using the pending list and
is updated accordingly.

Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Raf Dickson <rafdog35@gmail.com>
---
 net/vmw_vsock/af_vsock.c       | 1 +
 net/vmw_vsock/vmci_transport.c | 1 -
 2 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
index 1f94f0d44c..6cfa89b6f3 100644
--- a/net/vmw_vsock/af_vsock.c
+++ b/net/vmw_vsock/af_vsock.c
@@ -483,6 +483,7 @@ void vsock_add_pending(struct sock *listener, struct sock *pending)
 	sock_hold(pending);
 	sock_hold(listener);
 	list_add_tail(&vpending->pending_links, &vlistener->pending_links);
+	sk_acceptq_added(listener);
 }
 EXPORT_SYMBOL_GPL(vsock_add_pending);
 
diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c
index 635ebf9da4..c2db016cca 100644
--- a/net/vmw_vsock/vmci_transport.c
+++ b/net/vmw_vsock/vmci_transport.c
@@ -1109,7 +1109,6 @@ static int vmci_transport_recv_listen(struct sock *sk,
 	}
 
 	vsock_add_pending(sk, pending);
-	sk_acceptq_added(sk);
 
 	pending->sk_state = TCP_SYN_SENT;
 	vmci_trans(vpending)->produce_size =
-- 
2.54.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH net-next v3 3/4] vsock: fold sk_acceptq_added() into vsock_enqueue_accept()
  2026-06-12  4:52 [PATCH net-next v3 0/4] vsock: consolidate acceptq accounting into core helpers Raf Dickson
  2026-06-12  4:52 ` [PATCH net-next v3 1/4] vsock: introduce vsock_pending_to_accept() helper Raf Dickson
  2026-06-12  4:52 ` [PATCH net-next v3 2/4] vsock: fold sk_acceptq_added() into vsock_add_pending() Raf Dickson
@ 2026-06-12  4:52 ` Raf Dickson
  2026-06-12 10:46   ` Stefano Garzarella
                     ` (2 more replies)
  2026-06-12  4:52 ` [PATCH net-next v3 4/4] vsock: fold sk_acceptq_removed() into vsock_remove_pending() Raf Dickson
  3 siblings, 3 replies; 17+ messages in thread
From: Raf Dickson @ 2026-06-12  4:52 UTC (permalink / raw)
  To: netdev, virtualization
  Cc: pabeni, sgarzare, stefanha, bryan-bt.tan, vishnu.dasa,
	bcm-kernel-feedback-list, bobbyeshleman, leonardi, horms,
	edumazet, kuba, Raf Dickson

virtio and hyperv call sk_acceptq_added() immediately before
vsock_enqueue_accept(). Move the call into vsock_enqueue_accept()
itself so callers cannot forget it and the accounting is consistent.

Suggested-by: Paolo Abeni <pabeni@redhat.com>
Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Raf Dickson <rafdog35@gmail.com>
---
 net/vmw_vsock/af_vsock.c                | 1 +
 net/vmw_vsock/hyperv_transport.c        | 1 -
 net/vmw_vsock/virtio_transport_common.c | 1 -
 3 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
index 6cfa89b6f3..24916dd4e9 100644
--- a/net/vmw_vsock/af_vsock.c
+++ b/net/vmw_vsock/af_vsock.c
@@ -518,6 +518,7 @@ void vsock_enqueue_accept(struct sock *listener, struct sock *connected)
 	sock_hold(connected);
 	sock_hold(listener);
 	list_add_tail(&vconnected->accept_queue, &vlistener->accept_queue);
+	sk_acceptq_added(listener);
 }
 EXPORT_SYMBOL_GPL(vsock_enqueue_accept);
 
diff --git a/net/vmw_vsock/hyperv_transport.c b/net/vmw_vsock/hyperv_transport.c
index b3394946b2..0de8148877 100644
--- a/net/vmw_vsock/hyperv_transport.c
+++ b/net/vmw_vsock/hyperv_transport.c
@@ -410,7 +410,6 @@ static void hvs_open_connection(struct vmbus_channel *chan)
 
 	if (conn_from_host) {
 		new->sk_state = TCP_ESTABLISHED;
-		sk_acceptq_added(sk);
 
 		hvs_new->vm_srv_id = *if_type;
 		hvs_new->host_srv_id = *if_instance;
diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c
index b10666937c..4a39d48db9 100644
--- a/net/vmw_vsock/virtio_transport_common.c
+++ b/net/vmw_vsock/virtio_transport_common.c
@@ -1582,7 +1582,6 @@ virtio_transport_recv_listen(struct sock *sk, struct sk_buff *skb,
 		return ret;
 	}
 
-	sk_acceptq_added(sk);
 	if (virtio_transport_space_update(child, skb))
 		child->sk_write_space(child);
 
-- 
2.54.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH net-next v3 4/4] vsock: fold sk_acceptq_removed() into vsock_remove_pending()
  2026-06-12  4:52 [PATCH net-next v3 0/4] vsock: consolidate acceptq accounting into core helpers Raf Dickson
                   ` (2 preceding siblings ...)
  2026-06-12  4:52 ` [PATCH net-next v3 3/4] vsock: fold sk_acceptq_added() into vsock_enqueue_accept() Raf Dickson
@ 2026-06-12  4:52 ` Raf Dickson
  2026-06-12 10:48   ` Stefano Garzarella
                     ` (2 more replies)
  3 siblings, 3 replies; 17+ messages in thread
From: Raf Dickson @ 2026-06-12  4:52 UTC (permalink / raw)
  To: netdev, virtualization
  Cc: pabeni, sgarzare, stefanha, bryan-bt.tan, vishnu.dasa,
	bcm-kernel-feedback-list, bobbyeshleman, leonardi, horms,
	edumazet, kuba, Raf Dickson

Callers of vsock_remove_pending() must also call sk_acceptq_removed()
to keep sk_ack_backlog consistent. Move the call into
vsock_remove_pending() itself to make it automatic and prevent future
callers from forgetting it.

Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Raf Dickson <rafdog35@gmail.com>
---
 net/vmw_vsock/af_vsock.c       | 2 +-
 net/vmw_vsock/vmci_transport.c | 4 +---
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
index 24916dd4e9..4a7d6d247a 100644
--- a/net/vmw_vsock/af_vsock.c
+++ b/net/vmw_vsock/af_vsock.c
@@ -494,6 +494,7 @@ void vsock_remove_pending(struct sock *listener, struct sock *pending)
 	list_del_init(&vpending->pending_links);
 	sock_put(listener);
 	sock_put(pending);
+	sk_acceptq_removed(listener);
 }
 EXPORT_SYMBOL_GPL(vsock_remove_pending);
 
@@ -773,7 +774,6 @@ static void vsock_pending_work(struct work_struct *work)
 	if (vsock_is_pending(sk)) {
 		vsock_remove_pending(listener, sk);
 
-		sk_acceptq_removed(listener);
 	} else if (!vsk->rejected) {
 		/* We are not on the pending list and accept() did not reject
 		 * us, so we must have been accepted by our user process.  We
diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c
index c2db016cca..3e6445f4e1 100644
--- a/net/vmw_vsock/vmci_transport.c
+++ b/net/vmw_vsock/vmci_transport.c
@@ -980,10 +980,8 @@ static int vmci_transport_recv_listen(struct sock *sk,
 			err = -EINVAL;
 		}
 
-		if (err < 0) {
+		if (err < 0)
 			vsock_remove_pending(sk, pending);
-			sk_acceptq_removed(sk);
-		}
 
 		release_sock(pending);
 		vmci_transport_release_pending(pending);
-- 
2.54.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next v3 1/4] vsock: introduce vsock_pending_to_accept() helper
  2026-06-12  4:52 ` [PATCH net-next v3 1/4] vsock: introduce vsock_pending_to_accept() helper Raf Dickson
@ 2026-06-12 10:41   ` Stefano Garzarella
  2026-06-12 13:30   ` Luigi Leonardi
  2026-06-12 14:50   ` Bobby Eshleman
  2 siblings, 0 replies; 17+ messages in thread
From: Stefano Garzarella @ 2026-06-12 10:41 UTC (permalink / raw)
  To: Raf Dickson
  Cc: netdev, virtualization, pabeni, stefanha, bryan-bt.tan,
	vishnu.dasa, bcm-kernel-feedback-list, bobbyeshleman, leonardi,
	horms, edumazet, kuba

On Fri, Jun 12, 2026 at 04:52:13AM +0000, Raf Dickson wrote:
>Add vsock_pending_to_accept() to move a socket directly from the
>pending list to the accept queue in a single operation, avoiding
>the sock_put/sock_hold dance and the sk_acceptq_removed()/
>sk_acceptq_added() pair that would otherwise be needed when
>calling vsock_remove_pending() followed by vsock_enqueue_accept().
>
>Use it in vmci_transport_recv_connecting_server() where a completed
>handshake transitions the socket from pending to accept queue.
>
>Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
>Signed-off-by: Raf Dickson <rafdog35@gmail.com>
>---
> include/net/af_vsock.h         |  1 +
> net/vmw_vsock/af_vsock.c       | 10 ++++++++++
> net/vmw_vsock/vmci_transport.c |  3 +--
> 3 files changed, 12 insertions(+), 2 deletions(-)

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next v3 2/4] vsock: fold sk_acceptq_added() into vsock_add_pending()
  2026-06-12  4:52 ` [PATCH net-next v3 2/4] vsock: fold sk_acceptq_added() into vsock_add_pending() Raf Dickson
@ 2026-06-12 10:42   ` Stefano Garzarella
  2026-06-12 13:39   ` Luigi Leonardi
  2026-06-12 14:51   ` Bobby Eshleman
  2 siblings, 0 replies; 17+ messages in thread
From: Stefano Garzarella @ 2026-06-12 10:42 UTC (permalink / raw)
  To: Raf Dickson
  Cc: netdev, virtualization, pabeni, stefanha, bryan-bt.tan,
	vishnu.dasa, bcm-kernel-feedback-list, bobbyeshleman, leonardi,
	horms, edumazet, kuba

On Fri, Jun 12, 2026 at 04:52:14AM +0000, Raf Dickson wrote:
>Move sk_acceptq_added() into vsock_add_pending() so callers cannot
>forget it. vmci is the only transport using the pending list and
>is updated accordingly.
>
>Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
>Signed-off-by: Raf Dickson <rafdog35@gmail.com>
>---
> net/vmw_vsock/af_vsock.c       | 1 +
> net/vmw_vsock/vmci_transport.c | 1 -
> 2 files changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next v3 3/4] vsock: fold sk_acceptq_added() into vsock_enqueue_accept()
  2026-06-12  4:52 ` [PATCH net-next v3 3/4] vsock: fold sk_acceptq_added() into vsock_enqueue_accept() Raf Dickson
@ 2026-06-12 10:46   ` Stefano Garzarella
  2026-06-12 13:46   ` Luigi Leonardi
  2026-06-12 14:51   ` Bobby Eshleman
  2 siblings, 0 replies; 17+ messages in thread
From: Stefano Garzarella @ 2026-06-12 10:46 UTC (permalink / raw)
  To: Raf Dickson
  Cc: netdev, virtualization, pabeni, stefanha, bryan-bt.tan,
	vishnu.dasa, bcm-kernel-feedback-list, bobbyeshleman, leonardi,
	horms, edumazet, kuba

On Fri, Jun 12, 2026 at 04:52:15AM +0000, Raf Dickson wrote:
>virtio and hyperv call sk_acceptq_added() immediately before
>vsock_enqueue_accept(). Move the call into vsock_enqueue_accept()
>itself so callers cannot forget it and the accounting is consistent.
>
>Suggested-by: Paolo Abeni <pabeni@redhat.com>
>Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
>Signed-off-by: Raf Dickson <rafdog35@gmail.com>
>---
> net/vmw_vsock/af_vsock.c                | 1 +
> net/vmw_vsock/hyperv_transport.c        | 1 -
> net/vmw_vsock/virtio_transport_common.c | 1 -
> 3 files changed, 1 insertion(+), 2 deletions(-)

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next v3 4/4] vsock: fold sk_acceptq_removed() into vsock_remove_pending()
  2026-06-12  4:52 ` [PATCH net-next v3 4/4] vsock: fold sk_acceptq_removed() into vsock_remove_pending() Raf Dickson
@ 2026-06-12 10:48   ` Stefano Garzarella
  2026-06-12 13:47   ` Luigi Leonardi
  2026-06-12 14:51   ` Bobby Eshleman
  2 siblings, 0 replies; 17+ messages in thread
From: Stefano Garzarella @ 2026-06-12 10:48 UTC (permalink / raw)
  To: Raf Dickson
  Cc: netdev, virtualization, pabeni, stefanha, bryan-bt.tan,
	vishnu.dasa, bcm-kernel-feedback-list, bobbyeshleman, leonardi,
	horms, edumazet, kuba

On Fri, Jun 12, 2026 at 04:52:16AM +0000, Raf Dickson wrote:
>Callers of vsock_remove_pending() must also call sk_acceptq_removed()
>to keep sk_ack_backlog consistent. Move the call into
>vsock_remove_pending() itself to make it automatic and prevent future
>callers from forgetting it.
>
>Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
>Signed-off-by: Raf Dickson <rafdog35@gmail.com>
>---
> net/vmw_vsock/af_vsock.c       | 2 +-
> net/vmw_vsock/vmci_transport.c | 4 +---
> 2 files changed, 2 insertions(+), 4 deletions(-)
>
>diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
>index 24916dd4e9..4a7d6d247a 100644
>--- a/net/vmw_vsock/af_vsock.c
>+++ b/net/vmw_vsock/af_vsock.c
>@@ -494,6 +494,7 @@ void vsock_remove_pending(struct sock *listener, struct sock *pending)
> 	list_del_init(&vpending->pending_links);
> 	sock_put(listener);
> 	sock_put(pending);
>+	sk_acceptq_removed(listener);
> }
> EXPORT_SYMBOL_GPL(vsock_remove_pending);
>
>@@ -773,7 +774,6 @@ static void vsock_pending_work(struct work_struct *work)
> 	if (vsock_is_pending(sk)) {
> 		vsock_remove_pending(listener, sk);
>
     ^^
There is an extra blank line that we can now remove here.

BTW, the code LGTM:

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>

>-		sk_acceptq_removed(listener);
> 	} else if (!vsk->rejected) {
> 		/* We are not on the pending list and accept() did not reject
> 		 * us, so we must have been accepted by our user process.  We
>diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c
>index c2db016cca..3e6445f4e1 100644
>--- a/net/vmw_vsock/vmci_transport.c
>+++ b/net/vmw_vsock/vmci_transport.c
>@@ -980,10 +980,8 @@ static int vmci_transport_recv_listen(struct sock *sk,
> 			err = -EINVAL;
> 		}
>
>-		if (err < 0) {
>+		if (err < 0)
> 			vsock_remove_pending(sk, pending);
>-			sk_acceptq_removed(sk);
>-		}
>
> 		release_sock(pending);
> 		vmci_transport_release_pending(pending);
>-- 
>2.54.0
>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next v3 1/4] vsock: introduce vsock_pending_to_accept() helper
  2026-06-12  4:52 ` [PATCH net-next v3 1/4] vsock: introduce vsock_pending_to_accept() helper Raf Dickson
  2026-06-12 10:41   ` Stefano Garzarella
@ 2026-06-12 13:30   ` Luigi Leonardi
  2026-06-12 14:50   ` Bobby Eshleman
  2 siblings, 0 replies; 17+ messages in thread
From: Luigi Leonardi @ 2026-06-12 13:30 UTC (permalink / raw)
  To: Raf Dickson
  Cc: netdev, virtualization, pabeni, sgarzare, stefanha, bryan-bt.tan,
	vishnu.dasa, bcm-kernel-feedback-list, bobbyeshleman, horms,
	edumazet, kuba

On Fri, Jun 12, 2026 at 04:52:13AM +0000, Raf Dickson wrote:
>Add vsock_pending_to_accept() to move a socket directly from the
>pending list to the accept queue in a single operation, avoiding
>the sock_put/sock_hold dance and the sk_acceptq_removed()/
>sk_acceptq_added() pair that would otherwise be needed when
>calling vsock_remove_pending() followed by vsock_enqueue_accept().
>
>Use it in vmci_transport_recv_connecting_server() where a completed
>handshake transitions the socket from pending to accept queue.
>
>Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
>Signed-off-by: Raf Dickson <rafdog35@gmail.com>

Reviewed-by: Luigi Leonardi <leonardi@redhat.com>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next v3 2/4] vsock: fold sk_acceptq_added() into vsock_add_pending()
  2026-06-12  4:52 ` [PATCH net-next v3 2/4] vsock: fold sk_acceptq_added() into vsock_add_pending() Raf Dickson
  2026-06-12 10:42   ` Stefano Garzarella
@ 2026-06-12 13:39   ` Luigi Leonardi
  2026-06-12 14:51   ` Bobby Eshleman
  2 siblings, 0 replies; 17+ messages in thread
From: Luigi Leonardi @ 2026-06-12 13:39 UTC (permalink / raw)
  To: Raf Dickson
  Cc: netdev, virtualization, pabeni, sgarzare, stefanha, bryan-bt.tan,
	vishnu.dasa, bcm-kernel-feedback-list, bobbyeshleman, horms,
	edumazet, kuba

On Fri, Jun 12, 2026 at 04:52:14AM +0000, Raf Dickson wrote:
>Move sk_acceptq_added() into vsock_add_pending() so callers cannot
>forget it. vmci is the only transport using the pending list and
>is updated accordingly.
>
>Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
>Signed-off-by: Raf Dickson <rafdog35@gmail.com>

Reviewed-by: Luigi Leonardi <leonardi@redhat.com>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next v3 3/4] vsock: fold sk_acceptq_added() into vsock_enqueue_accept()
  2026-06-12  4:52 ` [PATCH net-next v3 3/4] vsock: fold sk_acceptq_added() into vsock_enqueue_accept() Raf Dickson
  2026-06-12 10:46   ` Stefano Garzarella
@ 2026-06-12 13:46   ` Luigi Leonardi
  2026-06-12 14:51   ` Bobby Eshleman
  2 siblings, 0 replies; 17+ messages in thread
From: Luigi Leonardi @ 2026-06-12 13:46 UTC (permalink / raw)
  To: Raf Dickson
  Cc: netdev, virtualization, pabeni, sgarzare, stefanha, bryan-bt.tan,
	vishnu.dasa, bcm-kernel-feedback-list, bobbyeshleman, horms,
	edumazet, kuba

On Fri, Jun 12, 2026 at 04:52:15AM +0000, Raf Dickson wrote:
>virtio and hyperv call sk_acceptq_added() immediately before
>vsock_enqueue_accept(). Move the call into vsock_enqueue_accept()
>itself so callers cannot forget it and the accounting is consistent.
>
>Suggested-by: Paolo Abeni <pabeni@redhat.com>
>Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
>Signed-off-by: Raf Dickson <rafdog35@gmail.com>

Reviewed-by: Luigi Leonardi <leonardi@redhat.com>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next v3 4/4] vsock: fold sk_acceptq_removed() into vsock_remove_pending()
  2026-06-12  4:52 ` [PATCH net-next v3 4/4] vsock: fold sk_acceptq_removed() into vsock_remove_pending() Raf Dickson
  2026-06-12 10:48   ` Stefano Garzarella
@ 2026-06-12 13:47   ` Luigi Leonardi
  2026-06-12 14:51   ` Bobby Eshleman
  2 siblings, 0 replies; 17+ messages in thread
From: Luigi Leonardi @ 2026-06-12 13:47 UTC (permalink / raw)
  To: Raf Dickson
  Cc: netdev, virtualization, pabeni, sgarzare, stefanha, bryan-bt.tan,
	vishnu.dasa, bcm-kernel-feedback-list, bobbyeshleman, horms,
	edumazet, kuba

On Fri, Jun 12, 2026 at 04:52:16AM +0000, Raf Dickson wrote:
>Callers of vsock_remove_pending() must also call sk_acceptq_removed()
>to keep sk_ack_backlog consistent. Move the call into
>vsock_remove_pending() itself to make it automatic and prevent future
>callers from forgetting it.
>
>Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
>Signed-off-by: Raf Dickson <rafdog35@gmail.com>

Reviewed-by: Luigi Leonardi <leonardi@redhat.com>


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next v3 1/4] vsock: introduce vsock_pending_to_accept() helper
  2026-06-12  4:52 ` [PATCH net-next v3 1/4] vsock: introduce vsock_pending_to_accept() helper Raf Dickson
  2026-06-12 10:41   ` Stefano Garzarella
  2026-06-12 13:30   ` Luigi Leonardi
@ 2026-06-12 14:50   ` Bobby Eshleman
  2 siblings, 0 replies; 17+ messages in thread
From: Bobby Eshleman @ 2026-06-12 14:50 UTC (permalink / raw)
  To: Raf Dickson
  Cc: netdev, virtualization, pabeni, sgarzare, stefanha, bryan-bt.tan,
	vishnu.dasa, bcm-kernel-feedback-list, leonardi, horms, edumazet,
	kuba

On Fri, Jun 12, 2026 at 04:52:13AM +0000, Raf Dickson wrote:
> Add vsock_pending_to_accept() to move a socket directly from the
> pending list to the accept queue in a single operation, avoiding
> the sock_put/sock_hold dance and the sk_acceptq_removed()/
> sk_acceptq_added() pair that would otherwise be needed when
> calling vsock_remove_pending() followed by vsock_enqueue_accept().
> 
> Use it in vmci_transport_recv_connecting_server() where a completed
> handshake transitions the socket from pending to accept queue.
> 
> Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
> Signed-off-by: Raf Dickson <rafdog35@gmail.com>
> ---
>  include/net/af_vsock.h         |  1 +
>  net/vmw_vsock/af_vsock.c       | 10 ++++++++++
>  net/vmw_vsock/vmci_transport.c |  3 +--
>  3 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/include/net/af_vsock.h b/include/net/af_vsock.h
> index 4e40063ada..30046a3c20 100644
> --- a/include/net/af_vsock.h
> +++ b/include/net/af_vsock.h
> @@ -220,6 +220,7 @@ static inline bool __vsock_in_connected_table(struct vsock_sock *vsk)
>  void vsock_add_pending(struct sock *listener, struct sock *pending);
>  void vsock_remove_pending(struct sock *listener, struct sock *pending);
>  void vsock_enqueue_accept(struct sock *listener, struct sock *connected);
> +void vsock_pending_to_accept(struct sock *listener, struct sock *pending);
>  void vsock_insert_connected(struct vsock_sock *vsk);
>  void vsock_remove_bound(struct vsock_sock *vsk);
>  void vsock_remove_connected(struct vsock_sock *vsk);
> diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
> index 2ce1063d4a..1f94f0d44c 100644
> --- a/net/vmw_vsock/af_vsock.c
> +++ b/net/vmw_vsock/af_vsock.c
> @@ -496,6 +496,16 @@ void vsock_remove_pending(struct sock *listener, struct sock *pending)
>  }
>  EXPORT_SYMBOL_GPL(vsock_remove_pending);
>  
> +void vsock_pending_to_accept(struct sock *listener, struct sock *pending)
> +{
> +	struct vsock_sock *vpending = vsock_sk(pending);
> +	struct vsock_sock *vlistener = vsock_sk(listener);
> +
> +	list_del_init(&vpending->pending_links);
> +	list_add_tail(&vpending->accept_queue, &vlistener->accept_queue);
> +}
> +EXPORT_SYMBOL_GPL(vsock_pending_to_accept);
> +
>  void vsock_enqueue_accept(struct sock *listener, struct sock *connected)
>  {
>  	struct vsock_sock *vlistener;
> diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c
> index 91516488a7..635ebf9da4 100644
> --- a/net/vmw_vsock/vmci_transport.c
> +++ b/net/vmw_vsock/vmci_transport.c
> @@ -1258,8 +1258,7 @@ vmci_transport_recv_connecting_server(struct sock *listener,
>  	 * listener's pending list to the accept queue so callers of accept()
>  	 * can find it.
>  	 */
> -	vsock_remove_pending(listener, pending);
> -	vsock_enqueue_accept(listener, pending);
> +	vsock_pending_to_accept(listener, pending);
>  
>  	/* Callers of accept() will be waiting on the listening socket, not
>  	 * the pending socket.
> -- 
> 2.54.0
> 

Reviewed-by: Bobby Eshleman <bobbyeshleman@meta.com>

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next v3 2/4] vsock: fold sk_acceptq_added() into vsock_add_pending()
  2026-06-12  4:52 ` [PATCH net-next v3 2/4] vsock: fold sk_acceptq_added() into vsock_add_pending() Raf Dickson
  2026-06-12 10:42   ` Stefano Garzarella
  2026-06-12 13:39   ` Luigi Leonardi
@ 2026-06-12 14:51   ` Bobby Eshleman
  2 siblings, 0 replies; 17+ messages in thread
From: Bobby Eshleman @ 2026-06-12 14:51 UTC (permalink / raw)
  To: Raf Dickson
  Cc: netdev, virtualization, pabeni, sgarzare, stefanha, bryan-bt.tan,
	vishnu.dasa, bcm-kernel-feedback-list, leonardi, horms, edumazet,
	kuba

On Fri, Jun 12, 2026 at 04:52:14AM +0000, Raf Dickson wrote:
> Move sk_acceptq_added() into vsock_add_pending() so callers cannot
> forget it. vmci is the only transport using the pending list and
> is updated accordingly.
> 
> Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
> Signed-off-by: Raf Dickson <rafdog35@gmail.com>
> ---
>  net/vmw_vsock/af_vsock.c       | 1 +
>  net/vmw_vsock/vmci_transport.c | 1 -
>  2 files changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
> index 1f94f0d44c..6cfa89b6f3 100644
> --- a/net/vmw_vsock/af_vsock.c
> +++ b/net/vmw_vsock/af_vsock.c
> @@ -483,6 +483,7 @@ void vsock_add_pending(struct sock *listener, struct sock *pending)
>  	sock_hold(pending);
>  	sock_hold(listener);
>  	list_add_tail(&vpending->pending_links, &vlistener->pending_links);
> +	sk_acceptq_added(listener);
>  }
>  EXPORT_SYMBOL_GPL(vsock_add_pending);
>  
> diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c
> index 635ebf9da4..c2db016cca 100644
> --- a/net/vmw_vsock/vmci_transport.c
> +++ b/net/vmw_vsock/vmci_transport.c
> @@ -1109,7 +1109,6 @@ static int vmci_transport_recv_listen(struct sock *sk,
>  	}
>  
>  	vsock_add_pending(sk, pending);
> -	sk_acceptq_added(sk);
>  
>  	pending->sk_state = TCP_SYN_SENT;
>  	vmci_trans(vpending)->produce_size =
> -- 
> 2.54.0
> 

Reviewed-by: Bobby Eshleman <bobbyeshleman@meta.com>

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next v3 3/4] vsock: fold sk_acceptq_added() into vsock_enqueue_accept()
  2026-06-12  4:52 ` [PATCH net-next v3 3/4] vsock: fold sk_acceptq_added() into vsock_enqueue_accept() Raf Dickson
  2026-06-12 10:46   ` Stefano Garzarella
  2026-06-12 13:46   ` Luigi Leonardi
@ 2026-06-12 14:51   ` Bobby Eshleman
  2 siblings, 0 replies; 17+ messages in thread
From: Bobby Eshleman @ 2026-06-12 14:51 UTC (permalink / raw)
  To: Raf Dickson
  Cc: netdev, virtualization, pabeni, sgarzare, stefanha, bryan-bt.tan,
	vishnu.dasa, bcm-kernel-feedback-list, leonardi, horms, edumazet,
	kuba

On Fri, Jun 12, 2026 at 04:52:15AM +0000, Raf Dickson wrote:
> virtio and hyperv call sk_acceptq_added() immediately before
> vsock_enqueue_accept(). Move the call into vsock_enqueue_accept()
> itself so callers cannot forget it and the accounting is consistent.
> 
> Suggested-by: Paolo Abeni <pabeni@redhat.com>
> Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
> Signed-off-by: Raf Dickson <rafdog35@gmail.com>
> ---
>  net/vmw_vsock/af_vsock.c                | 1 +
>  net/vmw_vsock/hyperv_transport.c        | 1 -
>  net/vmw_vsock/virtio_transport_common.c | 1 -
>  3 files changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
> index 6cfa89b6f3..24916dd4e9 100644
> --- a/net/vmw_vsock/af_vsock.c
> +++ b/net/vmw_vsock/af_vsock.c
> @@ -518,6 +518,7 @@ void vsock_enqueue_accept(struct sock *listener, struct sock *connected)
>  	sock_hold(connected);
>  	sock_hold(listener);
>  	list_add_tail(&vconnected->accept_queue, &vlistener->accept_queue);
> +	sk_acceptq_added(listener);
>  }
>  EXPORT_SYMBOL_GPL(vsock_enqueue_accept);
>  
> diff --git a/net/vmw_vsock/hyperv_transport.c b/net/vmw_vsock/hyperv_transport.c
> index b3394946b2..0de8148877 100644
> --- a/net/vmw_vsock/hyperv_transport.c
> +++ b/net/vmw_vsock/hyperv_transport.c
> @@ -410,7 +410,6 @@ static void hvs_open_connection(struct vmbus_channel *chan)
>  
>  	if (conn_from_host) {
>  		new->sk_state = TCP_ESTABLISHED;
> -		sk_acceptq_added(sk);
>  
>  		hvs_new->vm_srv_id = *if_type;
>  		hvs_new->host_srv_id = *if_instance;
> diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c
> index b10666937c..4a39d48db9 100644
> --- a/net/vmw_vsock/virtio_transport_common.c
> +++ b/net/vmw_vsock/virtio_transport_common.c
> @@ -1582,7 +1582,6 @@ virtio_transport_recv_listen(struct sock *sk, struct sk_buff *skb,
>  		return ret;
>  	}
>  
> -	sk_acceptq_added(sk);
>  	if (virtio_transport_space_update(child, skb))
>  		child->sk_write_space(child);
>  
> -- 
> 2.54.0
> 

Reviewed-by: Bobby Eshleman <bobbyeshleman@meta.com>

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next v3 4/4] vsock: fold sk_acceptq_removed() into vsock_remove_pending()
  2026-06-12  4:52 ` [PATCH net-next v3 4/4] vsock: fold sk_acceptq_removed() into vsock_remove_pending() Raf Dickson
  2026-06-12 10:48   ` Stefano Garzarella
  2026-06-12 13:47   ` Luigi Leonardi
@ 2026-06-12 14:51   ` Bobby Eshleman
  2 siblings, 0 replies; 17+ messages in thread
From: Bobby Eshleman @ 2026-06-12 14:51 UTC (permalink / raw)
  To: Raf Dickson
  Cc: netdev, virtualization, pabeni, sgarzare, stefanha, bryan-bt.tan,
	vishnu.dasa, bcm-kernel-feedback-list, leonardi, horms, edumazet,
	kuba

On Fri, Jun 12, 2026 at 04:52:16AM +0000, Raf Dickson wrote:
> Callers of vsock_remove_pending() must also call sk_acceptq_removed()
> to keep sk_ack_backlog consistent. Move the call into
> vsock_remove_pending() itself to make it automatic and prevent future
> callers from forgetting it.
> 
> Suggested-by: Stefano Garzarella <sgarzare@redhat.com>
> Signed-off-by: Raf Dickson <rafdog35@gmail.com>
> ---
>  net/vmw_vsock/af_vsock.c       | 2 +-
>  net/vmw_vsock/vmci_transport.c | 4 +---
>  2 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
> index 24916dd4e9..4a7d6d247a 100644
> --- a/net/vmw_vsock/af_vsock.c
> +++ b/net/vmw_vsock/af_vsock.c
> @@ -494,6 +494,7 @@ void vsock_remove_pending(struct sock *listener, struct sock *pending)
>  	list_del_init(&vpending->pending_links);
>  	sock_put(listener);
>  	sock_put(pending);
> +	sk_acceptq_removed(listener);
>  }
>  EXPORT_SYMBOL_GPL(vsock_remove_pending);
>  
> @@ -773,7 +774,6 @@ static void vsock_pending_work(struct work_struct *work)
>  	if (vsock_is_pending(sk)) {
>  		vsock_remove_pending(listener, sk);
>  
> -		sk_acceptq_removed(listener);
>  	} else if (!vsk->rejected) {
>  		/* We are not on the pending list and accept() did not reject
>  		 * us, so we must have been accepted by our user process.  We
> diff --git a/net/vmw_vsock/vmci_transport.c b/net/vmw_vsock/vmci_transport.c
> index c2db016cca..3e6445f4e1 100644
> --- a/net/vmw_vsock/vmci_transport.c
> +++ b/net/vmw_vsock/vmci_transport.c
> @@ -980,10 +980,8 @@ static int vmci_transport_recv_listen(struct sock *sk,
>  			err = -EINVAL;
>  		}
>  
> -		if (err < 0) {
> +		if (err < 0)
>  			vsock_remove_pending(sk, pending);
> -			sk_acceptq_removed(sk);
> -		}
>  
>  		release_sock(pending);
>  		vmci_transport_release_pending(pending);
> -- 
> 2.54.0
> 

Reviewed-by: Bobby Eshleman <bobbyeshleman@meta.com>

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2026-06-12 14:52 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-12  4:52 [PATCH net-next v3 0/4] vsock: consolidate acceptq accounting into core helpers Raf Dickson
2026-06-12  4:52 ` [PATCH net-next v3 1/4] vsock: introduce vsock_pending_to_accept() helper Raf Dickson
2026-06-12 10:41   ` Stefano Garzarella
2026-06-12 13:30   ` Luigi Leonardi
2026-06-12 14:50   ` Bobby Eshleman
2026-06-12  4:52 ` [PATCH net-next v3 2/4] vsock: fold sk_acceptq_added() into vsock_add_pending() Raf Dickson
2026-06-12 10:42   ` Stefano Garzarella
2026-06-12 13:39   ` Luigi Leonardi
2026-06-12 14:51   ` Bobby Eshleman
2026-06-12  4:52 ` [PATCH net-next v3 3/4] vsock: fold sk_acceptq_added() into vsock_enqueue_accept() Raf Dickson
2026-06-12 10:46   ` Stefano Garzarella
2026-06-12 13:46   ` Luigi Leonardi
2026-06-12 14:51   ` Bobby Eshleman
2026-06-12  4:52 ` [PATCH net-next v3 4/4] vsock: fold sk_acceptq_removed() into vsock_remove_pending() Raf Dickson
2026-06-12 10:48   ` Stefano Garzarella
2026-06-12 13:47   ` Luigi Leonardi
2026-06-12 14:51   ` Bobby Eshleman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox