diff options
Diffstat (limited to 'net/sunrpc/svcsock.c')
-rw-r--r-- | net/sunrpc/svcsock.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c index 213dea8b283c..af04f779ce9f 100644 --- a/net/sunrpc/svcsock.c +++ b/net/sunrpc/svcsock.c | |||
@@ -1143,11 +1143,8 @@ static int svc_tcp_recvfrom(struct svc_rqst *rqstp) | |||
1143 | 1143 | ||
1144 | p = (__be32 *)rqstp->rq_arg.head[0].iov_base; | 1144 | p = (__be32 *)rqstp->rq_arg.head[0].iov_base; |
1145 | calldir = p[1]; | 1145 | calldir = p[1]; |
1146 | if (calldir) { | 1146 | if (calldir) |
1147 | len = receive_cb_reply(svsk, rqstp); | 1147 | len = receive_cb_reply(svsk, rqstp); |
1148 | if (len < 0) | ||
1149 | goto error; | ||
1150 | } | ||
1151 | 1148 | ||
1152 | /* Reset TCP read info */ | 1149 | /* Reset TCP read info */ |
1153 | svsk->sk_reclen = 0; | 1150 | svsk->sk_reclen = 0; |
@@ -1156,6 +1153,8 @@ static int svc_tcp_recvfrom(struct svc_rqst *rqstp) | |||
1156 | if (svc_recv_available(svsk) > sizeof(rpc_fraghdr)) | 1153 | if (svc_recv_available(svsk) > sizeof(rpc_fraghdr)) |
1157 | set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags); | 1154 | set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags); |
1158 | 1155 | ||
1156 | if (len < 0) | ||
1157 | goto error; | ||
1159 | 1158 | ||
1160 | svc_xprt_copy_addrs(rqstp, &svsk->sk_xprt); | 1159 | svc_xprt_copy_addrs(rqstp, &svsk->sk_xprt); |
1161 | if (serv->sv_stats) | 1160 | if (serv->sv_stats) |