mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 20:48:49 +08:00
VSOCK: Don't dec ack backlog twice for rejected connections
If a pending socket is marked as rejected, we will decrease the sk_ack_backlog twice. So don't decrement it for rejected sockets in vsock_pending_work(). Testing of the rejected socket path was done through code modifications. Reported-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Jorgen Hansen <jhansen@vmware.com> Reviewed-by: Adit Ranadive <aditr@vmware.com> Reviewed-by: Aditya Sarwade <asarwade@vmware.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
bf1a85a838
commit
1190cfdb1a
@ -465,6 +465,8 @@ void vsock_pending_work(struct work_struct *work)
|
|||||||
|
|
||||||
if (vsock_is_pending(sk)) {
|
if (vsock_is_pending(sk)) {
|
||||||
vsock_remove_pending(listener, sk);
|
vsock_remove_pending(listener, sk);
|
||||||
|
|
||||||
|
listener->sk_ack_backlog--;
|
||||||
} else if (!vsk->rejected) {
|
} else if (!vsk->rejected) {
|
||||||
/* We are not on the pending list and accept() did not reject
|
/* We are not on the pending list and accept() did not reject
|
||||||
* us, so we must have been accepted by our user process. We
|
* us, so we must have been accepted by our user process. We
|
||||||
@ -475,8 +477,6 @@ void vsock_pending_work(struct work_struct *work)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
listener->sk_ack_backlog--;
|
|
||||||
|
|
||||||
/* We need to remove ourself from the global connected sockets list so
|
/* We need to remove ourself from the global connected sockets list so
|
||||||
* incoming packets can't find this socket, and to reduce the reference
|
* incoming packets can't find this socket, and to reduce the reference
|
||||||
* count.
|
* count.
|
||||||
@ -2010,5 +2010,5 @@ EXPORT_SYMBOL_GPL(vsock_core_get_transport);
|
|||||||
|
|
||||||
MODULE_AUTHOR("VMware, Inc.");
|
MODULE_AUTHOR("VMware, Inc.");
|
||||||
MODULE_DESCRIPTION("VMware Virtual Socket Family");
|
MODULE_DESCRIPTION("VMware Virtual Socket Family");
|
||||||
MODULE_VERSION("1.0.1.0-k");
|
MODULE_VERSION("1.0.2.0-k");
|
||||||
MODULE_LICENSE("GPL v2");
|
MODULE_LICENSE("GPL v2");
|
||||||
|
Loading…
Reference in New Issue
Block a user