mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 02:17:36 -04:00
vsock: fold sk_acceptq_removed() into vsock_remove_pending()
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>
This commit is contained in:
committed by
Jakub Kicinski
parent
6f6f9b65a9
commit
27fc25bb82
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user