svcrdma: Clean up locking
authorChuck Lever <chuck.lever@oracle.com>
Tue, 21 Nov 2023 16:40:46 +0000 (11:40 -0500)
committerChuck Lever <chuck.lever@oracle.com>
Sun, 7 Jan 2024 22:54:27 +0000 (17:54 -0500)
There's no need to protect llist_entry() with a spin lock.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
net/sunrpc/xprtrdma/svc_rdma_sendto.c

index 22c39ba923d279c28519585bb4c01ac5c38cc7cd..09f5d0570bc912c9ec234fe287f927eed56b108f 100644 (file)
@@ -201,10 +201,11 @@ struct svc_rdma_send_ctxt *svc_rdma_send_ctxt_get(struct svcxprt_rdma *rdma)
 
        spin_lock(&rdma->sc_send_lock);
        node = llist_del_first(&rdma->sc_send_ctxts);
+       spin_unlock(&rdma->sc_send_lock);
        if (!node)
                goto out_empty;
+
        ctxt = llist_entry(node, struct svc_rdma_send_ctxt, sc_node);
-       spin_unlock(&rdma->sc_send_lock);
 
 out:
        rpcrdma_set_xdrlen(&ctxt->sc_hdrbuf, 0);
@@ -217,7 +218,6 @@ out:
        return ctxt;
 
 out_empty:
-       spin_unlock(&rdma->sc_send_lock);
        ctxt = svc_rdma_send_ctxt_alloc(rdma);
        if (!ctxt)
                return NULL;