OSDN Git Service

vsock: fix possible infinite sleep in vsock_connectible_wait_data()
authorDexuan Cui <decui@microsoft.com>
Tue, 1 Nov 2022 02:17:06 +0000 (19:17 -0700)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 3 Nov 2022 09:49:29 +0000 (10:49 +0100)
commit466a85336fee6e3b35eb97b8405a28302fd25809
tree39f15fff8291acfde6a706a7b9206aeece8e4110
parentcf6ff0df0fd123493e57278a1bd4414a97511a34
vsock: fix possible infinite sleep in vsock_connectible_wait_data()

Currently vsock_connectible_has_data() may miss a wakeup operation
between vsock_connectible_has_data() == 0 and the prepare_to_wait().

Fix the race by adding the process to the wait queue before checking
vsock_connectible_has_data().

Fixes: b3f7fd54881b ("af_vsock: separate wait data loop")
Signed-off-by: Dexuan Cui <decui@microsoft.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Reported-by: Frédéric Dalleau <frederic.dalleau@docker.com>
Tested-by: Frédéric Dalleau <frederic.dalleau@docker.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/vmw_vsock/af_vsock.c