> From: Stefano Garzarella <sgarzare@xxxxxxxxxx> > Sent: Monday, October 31, 2022 1:43 AM > ... > s/qeuue/queue Will fix this. > >@@ -1905,8 +1905,11 @@ static int vsock_connectible_wait_data(struct > sock *sk, > > err = 0; > > transport = vsk->transport; > > > >- while ((data = vsock_connectible_has_data(vsk)) == 0) { > >+ while (1) { > > prepare_to_wait(sk_sleep(sk), wait, TASK_INTERRUPTIBLE); > >+ data = vsock_connectible_has_data(vsk); > >+ if (data != 0) > >+ break; > > > > if (sk->sk_err != 0 || > > (sk->sk_shutdown & RCV_SHUTDOWN) || > >@@ -1937,6 +1940,8 @@ static int vsock_connectible_wait_data(struct sock > *sk, > > err = -EAGAIN; > > break; > > } > >+ > >+ finish_wait(sk_sleep(sk), wait); > > Since we are going to call again prepare_to_wait() on top of the loop, > is finish_wait() call here really needed? It's not needed. Will remove this and send v2. > What about following what we do in vsock_accept and vsock_connect? > > prepare_to_wait() > > while (condition) { > ... > prepare_to_wait(); > } > > finish_wait() > > I find it a little more readable, but your solution is fine too. > > Thanks, > Stefano I'd like to stay with my version, as it only needs one line of prepare_to_wait(), and IMO it's more readable if we only exit from inside the while loop.