These pointers can be non-NULL and contain errors if initialization is aborted early. This is similar to how `__svc_rdma_free` takes care of it. Signed-off-by: Dan Aloni <dan.aloni@xxxxxxxxxxxx> --- net/sunrpc/xprtrdma/verbs.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c index f172d1298013..7f3173073e72 100644 --- a/net/sunrpc/xprtrdma/verbs.c +++ b/net/sunrpc/xprtrdma/verbs.c @@ -336,14 +336,14 @@ static void rpcrdma_ep_destroy(struct kref *kref) ep->re_id->qp = NULL; } - if (ep->re_attr.recv_cq) + if (ep->re_attr.recv_cq && !IS_ERR(ep->re_attr.recv_cq)) ib_free_cq(ep->re_attr.recv_cq); ep->re_attr.recv_cq = NULL; - if (ep->re_attr.send_cq) + if (ep->re_attr.send_cq && !IS_ERR(ep->re_attr.send_cq)) ib_free_cq(ep->re_attr.send_cq); ep->re_attr.send_cq = NULL; - if (ep->re_pd) + if (ep->re_pd && !IS_ERR(ep->re_pd)) ib_dealloc_pd(ep->re_pd); ep->re_pd = NULL; -- 2.23.0