]> www.infradead.org Git - users/willy/linux.git/commitdiff
xprtrdma: Use re_connect_status safely in rpcrdma_xprt_connect()
authorChuck Lever <chuck.lever@oracle.com>
Mon, 15 Jun 2020 13:20:57 +0000 (09:20 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Mon, 22 Jun 2020 13:34:35 +0000 (09:34 -0400)
Clean up: Sometimes creating a fresh rpcrdma_ep can fail. That's why
xprt_rdma_connect() always checks if the r_xprt->rx_ep pointer is
valid before dereferencing it. Instead, xprt_rdma_connect() can
simply check rpcrdma_xprt_connect()'s return value.

Also, there's no need to set re_connect_status to zero just after
the rpcrdma_ep is created, since it is allocated with kzalloc.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
net/sunrpc/xprtrdma/transport.c
net/sunrpc/xprtrdma/verbs.c

index 0c4af7f5e24173ec29b846319f799e38e6c144d7..14165b673b2068685e9e98a8c232d831dd33aeb0 100644 (file)
@@ -242,7 +242,7 @@ xprt_rdma_connect_worker(struct work_struct *work)
 
        rc = rpcrdma_xprt_connect(r_xprt);
        xprt_clear_connecting(xprt);
-       if (r_xprt->rx_ep && r_xprt->rx_ep->re_connect_status > 0) {
+       if (!rc) {
                xprt->connect_cookie++;
                xprt->stat.connect_count++;
                xprt->stat.connect_time += (long)jiffies -
index b021baa4b28df00ef716281ac769603da1ac5edb..b172e43cb204047a8e51862ae53298803b77c993 100644 (file)
@@ -528,7 +528,6 @@ retry:
                return rc;
        ep = r_xprt->rx_ep;
 
-       ep->re_connect_status = 0;
        xprt_clear_connected(xprt);
        rpcrdma_reset_cwnd(r_xprt);
 
@@ -565,8 +564,6 @@ retry:
        rpcrdma_mrs_create(r_xprt);
 
 out:
-       if (rc)
-               ep->re_connect_status = rc;
        trace_xprtrdma_connect(r_xprt, rc);
        return rc;
 }