diff options
author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2021-08-25 22:33:14 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-09-03 11:22:55 +0300 |
commit | 1a72ef276754bda2f894988a988d376d38dd5a2c (patch) | |
tree | e08b73ed1a803f66f379244c8013cc29022f8c9b /net | |
parent | d05330672afe2e142ba97e63bd7c1faef76781bb (diff) | |
download | linux-1a72ef276754bda2f894988a988d376d38dd5a2c.tar.xz |
SUNRPC: Fix XPT_BUSY flag leakage in svc_handle_xprt()...
[ Upstream commit 062b829c52ef4ed5df14f4850fc07651bb7c3b33 ]
If the attempt to reserve a slot fails, we currently leak the XPT_BUSY
flag on the socket. Among other things, this make it impossible to close
the socket.
Fixes: 82011c80b3ec ("SUNRPC: Move svc_xprt_received() call sites")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/sunrpc/svc_xprt.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c index d66a8e44a1ae..dbb41821b1b8 100644 --- a/net/sunrpc/svc_xprt.c +++ b/net/sunrpc/svc_xprt.c @@ -835,7 +835,8 @@ static int svc_handle_xprt(struct svc_rqst *rqstp, struct svc_xprt *xprt) rqstp->rq_stime = ktime_get(); rqstp->rq_reserved = serv->sv_max_mesg; atomic_add(rqstp->rq_reserved, &xprt->xpt_reserved); - } + } else + svc_xprt_received(xprt); out: trace_svc_handle_xprt(xprt, len); return len; |