On Sat, Jan 05, 2019 at 11:24:45AM -0500, Chuck Lever wrote: > > > 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> I'm assuming Trond or Anna will pick this up.--b. > > > > 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 > >