RxRPC: Use iov_iter_count() in rxrpc_send_data() instead of the len argument
authorDavid Howells <dhowells@redhat.com>
Wed, 1 Apr 2015 14:43:26 +0000 (15:43 +0100)
committerDavid Howells <dhowells@redhat.com>
Wed, 1 Apr 2015 14:49:26 +0000 (15:49 +0100)
Use iov_iter_count() in rxrpc_send_data() to get the remaining data length
instead of using the len argument as the len argument is now redundant.

Signed-off-by: David Howells <dhowells@redhat.com>
net/rxrpc/ar-output.c

index f48dc1aa48401ef393ac5289075f76aa9d84d591..de8d2f1b08c520fd05dd3ccd319b6cbacc0a615e 100644 (file)
@@ -546,8 +546,6 @@ static int rxrpc_send_data(struct kiocb *iocb,
        call->tx_pending = NULL;
 
        copied = 0;
-       if (len > iov_iter_count(&msg->msg_iter))
-               len = iov_iter_count(&msg->msg_iter);
        do {
                if (!skb) {
                        size_t size, chunk, max, space;
@@ -570,8 +568,8 @@ static int rxrpc_send_data(struct kiocb *iocb,
                        max &= ~(call->conn->size_align - 1UL);
 
                        chunk = max;
-                       if (chunk > len && !more)
-                               chunk = len;
+                       if (chunk > iov_iter_count(&msg->msg_iter) && !more)
+                               chunk = iov_iter_count(&msg->msg_iter);
 
                        space = chunk + call->conn->size_align;
                        space &= ~(call->conn->size_align - 1UL);
@@ -614,11 +612,11 @@ static int rxrpc_send_data(struct kiocb *iocb,
                sp = rxrpc_skb(skb);
 
                /* append next segment of data to the current buffer */
-               if (len > 0) {
+               if (iov_iter_count(&msg->msg_iter) > 0) {
                        int copy = skb_tailroom(skb);
                        ASSERTCMP(copy, >, 0);
-                       if (copy > len)
-                               copy = len;
+                       if (copy > iov_iter_count(&msg->msg_iter))
+                               copy = iov_iter_count(&msg->msg_iter);
                        if (copy > sp->remain)
                                copy = sp->remain;
 
@@ -630,8 +628,6 @@ static int rxrpc_send_data(struct kiocb *iocb,
                        sp->remain -= copy;
                        skb->mark += copy;
                        copied += copy;
-
-                       len -= copy;
                }
 
                /* check for the far side aborting the call or a network error
@@ -640,7 +636,8 @@ static int rxrpc_send_data(struct kiocb *iocb,
                        goto call_aborted;
 
                /* add the packet to the send queue if it's now full */
-               if (sp->remain <= 0 || (!len && !more)) {
+               if (sp->remain <= 0 ||
+                   (iov_iter_count(&msg->msg_iter) == 0 && !more)) {
                        struct rxrpc_connection *conn = call->conn;
                        uint32_t seq;
                        size_t pad;
@@ -670,7 +667,7 @@ static int rxrpc_send_data(struct kiocb *iocb,
                        sp->hdr.serviceId = conn->service_id;
 
                        sp->hdr.flags = conn->out_clientflag;
-                       if (len == 0 && !more)
+                       if (iov_iter_count(&msg->msg_iter) == 0 && !more)
                                sp->hdr.flags |= RXRPC_LAST_PACKET;
                        else if (CIRC_SPACE(call->acks_head, call->acks_tail,
                                            call->acks_winsz) > 1)
@@ -686,10 +683,11 @@ static int rxrpc_send_data(struct kiocb *iocb,
 
                        memcpy(skb->head, &sp->hdr,
                               sizeof(struct rxrpc_header));
-                       rxrpc_queue_packet(call, skb, !iov_iter_count(&msg->msg_iter) && !more);
+                       rxrpc_queue_packet(call, skb,
+                                          iov_iter_count(&msg->msg_iter) == 0 && !more);
                        skb = NULL;
                }
-       } while (len > 0);
+       } while (iov_iter_count(&msg->msg_iter) > 0);
 
 success:
        ret = copied;