aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@redhat.com>2013-06-26 10:55:40 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-07-25 17:07:32 -0400
commit369cf4be7588876d071c86d0efb7908e9bba7f6f (patch)
tree2b12404bbcc9cf21f5d622d718d4005b1a874cd1 /net
parent57370589c166cc8747f5e09365407d9dc04d7425 (diff)
svcrpc: don't error out on small tcp fragment
commit 1f691b07c5dc51b2055834f58c0f351defd97f27 upstream. Though clients we care about mostly don't do this, it is possible for rpc requests to be sent in multiple fragments. Here we have a sanity check to ensure that the final received rpc isn't too small--except that the number we're actually checking is the length of just the final fragment, not of the whole rpc. So a perfectly legal rpc that's unluckily fragmented could cause the server to close the connection here. Signed-off-by: J. Bruce Fields <bfields@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net')
-rw-r--r--net/sunrpc/svcsock.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index df74919c81c0..305374d4fb98 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -1095,7 +1095,7 @@ static int svc_tcp_recvfrom(struct svc_rqst *rqstp)
1095 goto err_noclose; 1095 goto err_noclose;
1096 } 1096 }
1097 1097
1098 if (svc_sock_reclen(svsk) < 8) { 1098 if (svsk->sk_datalen < 8) {
1099 svsk->sk_datalen = 0; 1099 svsk->sk_datalen = 0;
1100 goto err_delete; /* client is nuts. */ 1100 goto err_delete; /* client is nuts. */
1101 } 1101 }