]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/sunrpc/xprtrdma/verbs.c
xprtrdma: Address coverity complaint about wait_for_completion()
[karo-tx-linux.git] / net / sunrpc / xprtrdma / verbs.c
index 451f5f27d8af07887f38b8b6368b7cba7c7b52ee..cbb18857841a4c5cf3642c7792d04e54e6766e84 100644 (file)
@@ -331,6 +331,7 @@ static struct rdma_cm_id *
 rpcrdma_create_id(struct rpcrdma_xprt *xprt,
                        struct rpcrdma_ia *ia, struct sockaddr *addr)
 {
+       unsigned long wtimeout = msecs_to_jiffies(RDMA_RESOLVE_TIMEOUT) + 1;
        struct rdma_cm_id *id;
        int rc;
 
@@ -352,8 +353,12 @@ rpcrdma_create_id(struct rpcrdma_xprt *xprt,
                        __func__, rc);
                goto out;
        }
-       wait_for_completion_interruptible_timeout(&ia->ri_done,
-                               msecs_to_jiffies(RDMA_RESOLVE_TIMEOUT) + 1);
+       rc = wait_for_completion_interruptible_timeout(&ia->ri_done, wtimeout);
+       if (rc < 0) {
+               dprintk("RPC:       %s: wait() exited: %i\n",
+                       __func__, rc);
+               goto out;
+       }
 
        /* FIXME:
         * Until xprtrdma supports DEVICE_REMOVAL, the provider must
@@ -376,8 +381,12 @@ rpcrdma_create_id(struct rpcrdma_xprt *xprt,
                        __func__, rc);
                goto put;
        }
-       wait_for_completion_interruptible_timeout(&ia->ri_done,
-                               msecs_to_jiffies(RDMA_RESOLVE_TIMEOUT) + 1);
+       rc = wait_for_completion_interruptible_timeout(&ia->ri_done, wtimeout);
+       if (rc < 0) {
+               dprintk("RPC:       %s: wait() exited: %i\n",
+                       __func__, rc);
+               goto put;
+       }
        rc = ia->ri_async_rc;
        if (rc)
                goto put;