> On Jan 5, 2019, at 8:06 AM, Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote: > > The clean up is handled by the caller, rpcrdma_buffer_create(), so this > call to rpcrdma_sendctxs_destroy() leads to a double free. True. This fix is adequate, but I'm wondering if rpcrdma_sendctxs_destroy should be made more careful about being called twice. Hm. Reviewed-by: Chuck Lever <chuck.lever@xxxxxxxxxx> > Fixes: ae72950abf99 ("xprtrdma: Add data structure to manage RDMA Send arguments") > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > --- > net/sunrpc/xprtrdma/verbs.c | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > > diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c > index 3dde05892c8e..4994e75945b8 100644 > --- a/net/sunrpc/xprtrdma/verbs.c > +++ b/net/sunrpc/xprtrdma/verbs.c > @@ -845,17 +845,13 @@ static int rpcrdma_sendctxs_create(struct rpcrdma_xprt *r_xprt) > for (i = 0; i <= buf->rb_sc_last; i++) { > sc = rpcrdma_sendctx_create(&r_xprt->rx_ia); > if (!sc) > - goto out_destroy; > + return -ENOMEM; > > sc->sc_xprt = r_xprt; > buf->rb_sc_ctxs[i] = sc; > } > > return 0; > - > -out_destroy: > - rpcrdma_sendctxs_destroy(buf); > - return -ENOMEM; > } > > /* The sendctx queue is not guaranteed to have a size that is a > -- > 2.17.1 > -- Chuck Lever