diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 7f1d166ce612..2cb12fe3b60d 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -1559,7 +1559,7 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, while (total_written < len) { ssize_t written; - add_wait_queue(sk_sleep(sk), &wait); + prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); while (vsock_stream_has_space(vsk) == 0 && sk->sk_err == 0 && !(sk->sk_shutdown & SEND_SHUTDOWN) && @@ -1568,13 +1568,13 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, /* Don't wait for non-blocking sockets. */ if (timeout == 0) { err = -EAGAIN; - remove_wait_queue(sk_sleep(sk), &wait); + finish_wait(sk_sleep(sk), &wait); goto out_err; } err = transport->notify_send_pre_block(vsk, &send_data); if (err < 0) { - remove_wait_queue(sk_sleep(sk), &wait); + finish_wait(sk_sleep(sk), &wait); goto out_err; } @@ -1583,15 +1583,15 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, lock_sock(sk); if (signal_pending(current)) { err = sock_intr_errno(timeout); - remove_wait_queue(sk_sleep(sk), &wait); + finish_wait(sk_sleep(sk), &wait); goto out_err; } else if (timeout == 0) { err = -EAGAIN; - remove_wait_queue(sk_sleep(sk), &wait); + finish_wait(sk_sleep(sk), &wait); goto out_err; } } - remove_wait_queue(sk_sleep(sk), &wait); + finish_wait(sk_sleep(sk), &wait); /* These checks occur both as part of and after the loop * conditional since we need to check before and after