]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/sunrpc/xdr.c
Merge tag 'hsi-for-3.16-fixes1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / net / sunrpc / xdr.c
index 39928444c7fb407feed6049f01681b862ede2172..23fb4e75e24546bd7b2394511fec972cec1aa6d6 100644 (file)
@@ -523,10 +523,9 @@ __be32 *xdr_get_next_encode_buffer(struct xdr_stream *xdr, size_t nbytes)
        frag2bytes = nbytes - frag1bytes;
        if (xdr->iov)
                xdr->iov->iov_len += frag1bytes;
-       else {
+       else
                xdr->buf->page_len += frag1bytes;
-               xdr->page_ptr++;
-       }
+       xdr->page_ptr++;
        xdr->iov = NULL;
        /*
         * If the last encode didn't end exactly on a page boundary, the
@@ -638,8 +637,10 @@ void xdr_truncate_encode(struct xdr_stream *xdr, size_t len)
                /* xdr->iov should already be NULL */
                return;
        }
-       if (fraglen)
+       if (fraglen) {
                xdr->end = head->iov_base + head->iov_len;
+               xdr->page_ptr--;
+       }
        /* (otherwise assume xdr->end is already set) */
        head->iov_len = len;
        buf->len = len;