diff options
author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2019-03-15 19:47:34 +0300 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2019-03-15 20:06:21 +0300 |
commit | 9734ad57b0f1a367fd3a00d717f97f8c00d9edb7 (patch) | |
tree | 2990623cbed5edec300f54d2e46184f7c95be2ca /net/sunrpc | |
parent | 400417b05f3ec0531544ca5f94e64d838d8b8849 (diff) | |
download | linux-9734ad57b0f1a367fd3a00d717f97f8c00d9edb7.tar.xz |
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/sunrpc')
-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, goto out; if (ret != want) goto out; - } else + } else if (offset < seek_init) offset = seek_init; ret = -EMSGSIZE; out: |