diff options
-rw-r--r-- | net/sunrpc/xdr.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c index 42a7ebf2a322..3317db3cb102 100644 --- a/net/sunrpc/xdr.c +++ b/net/sunrpc/xdr.c | |||
@@ -402,14 +402,13 @@ xdr_shrink_pagelen(struct xdr_buf *buf, size_t len) | |||
402 | 402 | ||
403 | /* Shift the tail first */ | 403 | /* Shift the tail first */ |
404 | if (tail->iov_len != 0) { | 404 | if (tail->iov_len != 0) { |
405 | copy = len; | ||
405 | if (tail->iov_len > len) { | 406 | if (tail->iov_len > len) { |
406 | char *p = (char *)tail->iov_base + len; | 407 | char *p = (char *)tail->iov_base + len; |
407 | memmove(p, tail->iov_base, tail->iov_len - len); | 408 | memmove(p, tail->iov_base, tail->iov_len - len); |
408 | } | 409 | } else |
409 | /* Copy from the inlined pages into the tail */ | ||
410 | copy = len; | ||
411 | if (copy > tail->iov_len) | ||
412 | copy = tail->iov_len; | 410 | copy = tail->iov_len; |
411 | /* Copy from the inlined pages into the tail */ | ||
413 | _copy_from_pages((char *)tail->iov_base, | 412 | _copy_from_pages((char *)tail->iov_base, |
414 | buf->pages, buf->page_base + pglen - len, | 413 | buf->pages, buf->page_base + pglen - len, |
415 | copy); | 414 | copy); |