public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] SUNRPC: The TCP back channel mustn't disappear while requests are outstanding
@ 2019-10-16 14:15 Trond Myklebust
  2019-10-16 14:15 ` [PATCH 2/3] SUNRPC: The RDMA " Trond Myklebust
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Trond Myklebust @ 2019-10-16 14:15 UTC (permalink / raw)
  To: linux-nfs; +Cc: Neil Brown, Chuck Lever, Anna Schumaker, J. Bruce Fields

If there are TCP back channel requests either being processed by the
server threads, then we should hold a reference to the transport
to ensure it doesn't get freed from underneath us.

Reported-by: Neil Brown <neilb@suse.de>
Fixes: 2ea24497a1b3 ("SUNRPC: RPC callbacks may be split across several..")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
---
 net/sunrpc/backchannel_rqst.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/net/sunrpc/backchannel_rqst.c b/net/sunrpc/backchannel_rqst.c
index 339e8c077c2d..7eb251372f94 100644
--- a/net/sunrpc/backchannel_rqst.c
+++ b/net/sunrpc/backchannel_rqst.c
@@ -307,8 +307,8 @@ void xprt_free_bc_rqst(struct rpc_rqst *req)
 		 */
 		dprintk("RPC:       Last session removed req=%p\n", req);
 		xprt_free_allocation(req);
-		return;
 	}
+	xprt_put(xprt);
 }
 
 /*
@@ -339,7 +339,7 @@ struct rpc_rqst *xprt_lookup_bc_request(struct rpc_xprt *xprt, __be32 xid)
 		spin_unlock(&xprt->bc_pa_lock);
 		if (new) {
 			if (req != new)
-				xprt_free_bc_rqst(new);
+				xprt_free_allocation(new);
 			break;
 		} else if (req)
 			break;
@@ -368,6 +368,7 @@ void xprt_complete_bc_request(struct rpc_rqst *req, uint32_t copied)
 	set_bit(RPC_BC_PA_IN_USE, &req->rq_bc_pa_state);
 
 	dprintk("RPC:       add callback request to list\n");
+	xprt_get(xprt);
 	spin_lock(&bc_serv->sv_cb_lock);
 	list_add(&req->rq_bc_list, &bc_serv->sv_cb_list);
 	wake_up(&bc_serv->sv_cb_waitq);
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2019-10-17 13:06 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-10-16 14:15 [PATCH 1/3] SUNRPC: The TCP back channel mustn't disappear while requests are outstanding Trond Myklebust
2019-10-16 14:15 ` [PATCH 2/3] SUNRPC: The RDMA " Trond Myklebust
2019-10-16 14:15   ` [PATCH 3/3] SUNRPC: Destroy the back channel when we destroy the host transport Trond Myklebust
2019-10-16 22:08     ` NeilBrown
2019-10-17 13:06       ` Trond Myklebust
2019-10-16 21:38 ` [PATCH 1/3] SUNRPC: The TCP back channel mustn't disappear while requests are outstanding J. Bruce Fields
2019-10-16 22:24 ` NeilBrown
2019-10-17 12:43   ` Trond Myklebust

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox