Hi Anna- > On Jan 25, 2022, at 3:06 PM, Dan Aloni <dan.aloni@xxxxxxxxxxxx> wrote: > > If there are failures then we must not leave the non-NULL pointers with > the error value, otherwise `rpcrdma_ep_destroy` gets confused and tries > free them, resulting in an Oops. > > Signed-off-by: Dan Aloni <dan.aloni@xxxxxxxxxxxx> Acked-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > --- > net/sunrpc/xprtrdma/verbs.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c > index 3d3673ba9e1e..2a2e1514ac79 100644 > --- a/net/sunrpc/xprtrdma/verbs.c > +++ b/net/sunrpc/xprtrdma/verbs.c > @@ -436,6 +436,7 @@ static int rpcrdma_ep_create(struct rpcrdma_xprt *r_xprt) > IB_POLL_WORKQUEUE); > if (IS_ERR(ep->re_attr.send_cq)) { > rc = PTR_ERR(ep->re_attr.send_cq); > + ep->re_attr.send_cq = NULL; > goto out_destroy; > } > > @@ -444,6 +445,7 @@ static int rpcrdma_ep_create(struct rpcrdma_xprt *r_xprt) > IB_POLL_WORKQUEUE); > if (IS_ERR(ep->re_attr.recv_cq)) { > rc = PTR_ERR(ep->re_attr.recv_cq); > + ep->re_attr.recv_cq = NULL; > goto out_destroy; > } > ep->re_receive_count = 0; > @@ -482,6 +484,7 @@ static int rpcrdma_ep_create(struct rpcrdma_xprt *r_xprt) > ep->re_pd = ib_alloc_pd(device, 0); > if (IS_ERR(ep->re_pd)) { > rc = PTR_ERR(ep->re_pd); > + ep->re_pd = NULL; > goto out_destroy; > } > > -- > 2.23.0 > -- Chuck Lever