Re: [PATCH] xrpcrdma: add missing error checks in rpcrdma_ep_destroy

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> On Jan 25, 2022, at 2:17 PM, Dan Aloni <dan.aloni@xxxxxxxxxxxx> wrote:
> 
> 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.

IIUC the only place that can set these values to an
ERR_PTR is rpcrdma_ep_create() ? I think I'd rather
have rpcrdma_ep_create() set the fields to NULL in
the error cases.

Good catch. I'm afraid to ask how you found this.

> 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
> 

--
Chuck Lever







[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux