]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
vsock: fold sk_acceptq_removed() into vsock_remove_pending()
authorRaf Dickson <rafdog35@gmail.com>
Fri, 12 Jun 2026 04:52:16 +0000 (04:52 +0000)
committerJakub Kicinski <kuba@kernel.org>
Sat, 13 Jun 2026 17:39:26 +0000 (10:39 -0700)
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: Stefano Garzarella <sgarzare@redhat.com>
Reviewed-by: Luigi Leonardi <leonardi@redhat.com>
Reviewed-by: Bobby Eshleman <bobbyeshleman@meta.com>
Link: https://patch.msgid.link/20260612045216.105796-5-rafdog35@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/vmw_vsock/af_vsock.c
net/vmw_vsock/vmci_transport.c

index 2e39656a798bc9073998330717986a5b698c75b4..622dbd0467994428f1a590f559b78d8c17f6ba60 100644 (file)
@@ -495,6 +495,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,8 +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
index 2d8efeb8afe233beb5e9aed9bcd4798e79dc3753..1c4ee039c16629aac67fb292dda4e664fb4f1ac7 100644 (file)
@@ -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);