Signed-off-by: Wenchao Xia <xiaw...@linux.vnet.ibm.com> Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> Signed-off-by: Michael Tokarev <m...@tls.msk.ru> --- util/iov.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/util/iov.c b/util/iov.c index f705586..bb46c04 100644 --- a/util/iov.c +++ b/util/iov.c @@ -181,13 +181,11 @@ ssize_t iov_send_recv(int sockfd, struct iovec *iov, unsigned iov_cnt, assert(iov[niov].iov_len > tail); orig_len = iov[niov].iov_len; iov[niov++].iov_len = tail; - } - - ret = do_send_recv(sockfd, iov, niov, do_send); - - /* Undo the changes above before checking for errors */ - if (tail) { + ret = do_send_recv(sockfd, iov, niov, do_send); + /* Undo the changes above before checking for errors */ iov[niov-1].iov_len = orig_len; + } else { + ret = do_send_recv(sockfd, iov, niov, do_send); } if (offset) { iov[0].iov_base -= offset; -- 1.7.10.4