diff options
author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2019-03-15 12:47:34 -0400 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2019-03-15 13:06:21 -0400 |
commit | 9734ad57b0f1a367fd3a00d717f97f8c00d9edb7 (patch) | |
tree | 2990623cbed5edec300f54d2e46184f7c95be2ca /net | |
parent | 400417b05f3ec0531544ca5f94e64d838d8b8849 (diff) |
SUNRPC: Fix a client regression when handling oversized replies
If the server sends a reply that is larger than the pre-allocated
buffer, then the current code may fail to register how much of
the stream that it has finished reading. This again can lead to
hangs.
Fixes: e92053a52e68 ("SUNRPC: Handle zero length fragments correctly")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/sunrpc/xprtsock.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 42f45d33dc56..9359539907ba 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c | |||
@@ -453,7 +453,7 @@ xs_read_xdr_buf(struct socket *sock, struct msghdr *msg, int flags, | |||
453 | goto out; | 453 | goto out; |
454 | if (ret != want) | 454 | if (ret != want) |
455 | goto out; | 455 | goto out; |
456 | } else | 456 | } else if (offset < seek_init) |
457 | offset = seek_init; | 457 | offset = seek_init; |
458 | ret = -EMSGSIZE; | 458 | ret = -EMSGSIZE; |
459 | out: | 459 | out: |