diff options
Diffstat (limited to 'net/vmw_vsock/af_vsock.c')
-rw-r--r-- | net/vmw_vsock/af_vsock.c | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 7fd1220fbfa0..bbe65dcb9738 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c | |||
@@ -1557,8 +1557,6 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, | |||
1557 | if (err < 0) | 1557 | if (err < 0) |
1558 | goto out; | 1558 | goto out; |
1559 | 1559 | ||
1560 | prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); | ||
1561 | |||
1562 | while (total_written < len) { | 1560 | while (total_written < len) { |
1563 | ssize_t written; | 1561 | ssize_t written; |
1564 | 1562 | ||
@@ -1578,7 +1576,9 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, | |||
1578 | goto out_wait; | 1576 | goto out_wait; |
1579 | 1577 | ||
1580 | release_sock(sk); | 1578 | release_sock(sk); |
1579 | prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); | ||
1581 | timeout = schedule_timeout(timeout); | 1580 | timeout = schedule_timeout(timeout); |
1581 | finish_wait(sk_sleep(sk), &wait); | ||
1582 | lock_sock(sk); | 1582 | lock_sock(sk); |
1583 | if (signal_pending(current)) { | 1583 | if (signal_pending(current)) { |
1584 | err = sock_intr_errno(timeout); | 1584 | err = sock_intr_errno(timeout); |
@@ -1588,8 +1588,6 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, | |||
1588 | goto out_wait; | 1588 | goto out_wait; |
1589 | } | 1589 | } |
1590 | 1590 | ||
1591 | prepare_to_wait(sk_sleep(sk), &wait, | ||
1592 | TASK_INTERRUPTIBLE); | ||
1593 | } | 1591 | } |
1594 | 1592 | ||
1595 | /* These checks occur both as part of and after the loop | 1593 | /* These checks occur both as part of and after the loop |
@@ -1635,7 +1633,6 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, | |||
1635 | out_wait: | 1633 | out_wait: |
1636 | if (total_written > 0) | 1634 | if (total_written > 0) |
1637 | err = total_written; | 1635 | err = total_written; |
1638 | finish_wait(sk_sleep(sk), &wait); | ||
1639 | out: | 1636 | out: |
1640 | release_sock(sk); | 1637 | release_sock(sk); |
1641 | return err; | 1638 | return err; |
@@ -1716,7 +1713,6 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, | |||
1716 | if (err < 0) | 1713 | if (err < 0) |
1717 | goto out; | 1714 | goto out; |
1718 | 1715 | ||
1719 | prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); | ||
1720 | 1716 | ||
1721 | while (1) { | 1717 | while (1) { |
1722 | s64 ready = vsock_stream_has_data(vsk); | 1718 | s64 ready = vsock_stream_has_data(vsk); |
@@ -1727,7 +1723,7 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, | |||
1727 | */ | 1723 | */ |
1728 | 1724 | ||
1729 | err = -ENOMEM; | 1725 | err = -ENOMEM; |
1730 | goto out_wait; | 1726 | goto out; |
1731 | } else if (ready > 0) { | 1727 | } else if (ready > 0) { |
1732 | ssize_t read; | 1728 | ssize_t read; |
1733 | 1729 | ||
@@ -1750,7 +1746,7 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, | |||
1750 | vsk, target, read, | 1746 | vsk, target, read, |
1751 | !(flags & MSG_PEEK), &recv_data); | 1747 | !(flags & MSG_PEEK), &recv_data); |
1752 | if (err < 0) | 1748 | if (err < 0) |
1753 | goto out_wait; | 1749 | goto out; |
1754 | 1750 | ||
1755 | if (read >= target || flags & MSG_PEEK) | 1751 | if (read >= target || flags & MSG_PEEK) |
1756 | break; | 1752 | break; |
@@ -1773,7 +1769,9 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, | |||
1773 | break; | 1769 | break; |
1774 | 1770 | ||
1775 | release_sock(sk); | 1771 | release_sock(sk); |
1772 | prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); | ||
1776 | timeout = schedule_timeout(timeout); | 1773 | timeout = schedule_timeout(timeout); |
1774 | finish_wait(sk_sleep(sk), &wait); | ||
1777 | lock_sock(sk); | 1775 | lock_sock(sk); |
1778 | 1776 | ||
1779 | if (signal_pending(current)) { | 1777 | if (signal_pending(current)) { |
@@ -1783,9 +1781,6 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, | |||
1783 | err = -EAGAIN; | 1781 | err = -EAGAIN; |
1784 | break; | 1782 | break; |
1785 | } | 1783 | } |
1786 | |||
1787 | prepare_to_wait(sk_sleep(sk), &wait, | ||
1788 | TASK_INTERRUPTIBLE); | ||
1789 | } | 1784 | } |
1790 | } | 1785 | } |
1791 | 1786 | ||
@@ -1816,8 +1811,6 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, | |||
1816 | err = copied; | 1811 | err = copied; |
1817 | } | 1812 | } |
1818 | 1813 | ||
1819 | out_wait: | ||
1820 | finish_wait(sk_sleep(sk), &wait); | ||
1821 | out: | 1814 | out: |
1822 | release_sock(sk); | 1815 | release_sock(sk); |
1823 | return err; | 1816 | return err; |