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 <[email protected]> > Signed-off-by: Raf Dickson <[email protected]> > --- > 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 <[email protected]>
