diff options
Diffstat (limited to 'net/tipc/socket.c')
-rw-r--r-- | net/tipc/socket.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c index e1c791798ba1..338837396642 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c | |||
@@ -576,12 +576,14 @@ static int send_msg(struct kiocb *iocb, struct socket *sock, | |||
576 | &dest->addr.name.name, | 576 | &dest->addr.name.name, |
577 | dest->addr.name.domain, | 577 | dest->addr.name.domain, |
578 | m->msg_iovlen, | 578 | m->msg_iovlen, |
579 | m->msg_iov); | 579 | m->msg_iov, |
580 | total_len); | ||
580 | } else if (dest->addrtype == TIPC_ADDR_ID) { | 581 | } else if (dest->addrtype == TIPC_ADDR_ID) { |
581 | res = tipc_send2port(tport->ref, | 582 | res = tipc_send2port(tport->ref, |
582 | &dest->addr.id, | 583 | &dest->addr.id, |
583 | m->msg_iovlen, | 584 | m->msg_iovlen, |
584 | m->msg_iov); | 585 | m->msg_iov, |
586 | total_len); | ||
585 | } else if (dest->addrtype == TIPC_ADDR_MCAST) { | 587 | } else if (dest->addrtype == TIPC_ADDR_MCAST) { |
586 | if (needs_conn) { | 588 | if (needs_conn) { |
587 | res = -EOPNOTSUPP; | 589 | res = -EOPNOTSUPP; |
@@ -593,7 +595,8 @@ static int send_msg(struct kiocb *iocb, struct socket *sock, | |||
593 | res = tipc_multicast(tport->ref, | 595 | res = tipc_multicast(tport->ref, |
594 | &dest->addr.nameseq, | 596 | &dest->addr.nameseq, |
595 | m->msg_iovlen, | 597 | m->msg_iovlen, |
596 | m->msg_iov); | 598 | m->msg_iov, |
599 | total_len); | ||
597 | } | 600 | } |
598 | if (likely(res != -ELINKCONG)) { | 601 | if (likely(res != -ELINKCONG)) { |
599 | if (needs_conn && (res >= 0)) | 602 | if (needs_conn && (res >= 0)) |
@@ -659,7 +662,8 @@ static int send_packet(struct kiocb *iocb, struct socket *sock, | |||
659 | break; | 662 | break; |
660 | } | 663 | } |
661 | 664 | ||
662 | res = tipc_send(tport->ref, m->msg_iovlen, m->msg_iov); | 665 | res = tipc_send(tport->ref, m->msg_iovlen, m->msg_iov, |
666 | total_len); | ||
663 | if (likely(res != -ELINKCONG)) | 667 | if (likely(res != -ELINKCONG)) |
664 | break; | 668 | break; |
665 | if (m->msg_flags & MSG_DONTWAIT) { | 669 | if (m->msg_flags & MSG_DONTWAIT) { |
@@ -766,7 +770,7 @@ static int send_stream(struct kiocb *iocb, struct socket *sock, | |||
766 | bytes_to_send = curr_left; | 770 | bytes_to_send = curr_left; |
767 | my_iov.iov_base = curr_start; | 771 | my_iov.iov_base = curr_start; |
768 | my_iov.iov_len = bytes_to_send; | 772 | my_iov.iov_len = bytes_to_send; |
769 | res = send_packet(NULL, sock, &my_msg, 0); | 773 | res = send_packet(NULL, sock, &my_msg, bytes_to_send); |
770 | if (res < 0) { | 774 | if (res < 0) { |
771 | if (bytes_sent) | 775 | if (bytes_sent) |
772 | res = bytes_sent; | 776 | res = bytes_sent; |