|
@@ -641,8 +641,7 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp)
|
|
|
* transport list
|
|
|
*/
|
|
|
if (test_bit(XPT_CLOSE, &xprt->xpt_flags))
|
|
|
- goto close_out;
|
|
|
-
|
|
|
+ goto defer;
|
|
|
goto out;
|
|
|
}
|
|
|
dprintk("svcrdma: processing ctxt=%p on xprt=%p, rqstp=%p, status=%d\n",
|
|
@@ -700,15 +699,6 @@ out_err:
|
|
|
svc_rdma_put_context(ctxt, 0);
|
|
|
return 0;
|
|
|
|
|
|
- close_out:
|
|
|
- if (ctxt)
|
|
|
- svc_rdma_put_context(ctxt, 1);
|
|
|
- dprintk("svcrdma: transport %p is closing\n", xprt);
|
|
|
- /*
|
|
|
- * Set the close bit and enqueue it. svc_recv will see the
|
|
|
- * close bit and call svc_xprt_delete
|
|
|
- */
|
|
|
- set_bit(XPT_CLOSE, &xprt->xpt_flags);
|
|
|
defer:
|
|
|
return 0;
|
|
|
|