On Fri, 2019-08-09 at 14:28 +0000, Bernard Metzler wrote: > -----"Dan Carpenter" <dan.carpenter@xxxxxxxxxx> wrote: ----- > > > To: "Bernard Metzler" <bmt@xxxxxxxxxxxxxx> > > From: "Dan Carpenter" <dan.carpenter@xxxxxxxxxx> > > Date: 08/09/2019 04:09PM > > Cc: "Doug Ledford" <dledford@xxxxxxxxxx>, "Jason Gunthorpe" > > <jgg@xxxxxxxx>, linux-rdma@xxxxxxxxxxxxxxx, > > kernel-janitors@xxxxxxxxxxxxxxx > > Subject: [EXTERNAL] [PATCH v2] RDMA/siw: Fix a memory leak in > > siw_init_cpulist() > > > > The error handling code doesn't free siw_cpu_info.tx_valid_cpus[0]. > > The > > first iteration through the loop is a no-op so this is sort of an > > off > > by one bug. Also Bernard pointed out that we can remove the NULL > > assignment and simplify the code a bit. > > > > Fixes: bdcf26bf9b3a ("rdma/siw: network and RDMA core interface") > > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > > Reviewed-by: Bernard Metzler <bmt@xxxxxxxxxxxxxx> > > --- > > v2: Remove the NULL assignment like Bernard Metzler pointed out. > > > > drivers/infiniband/sw/siw/siw_main.c | 4 +--- > > 1 file changed, 1 insertion(+), 3 deletions(-) > > > > diff --git a/drivers/infiniband/sw/siw/siw_main.c > > b/drivers/infiniband/sw/siw/siw_main.c > > index d0f140daf659..05a92f997f60 100644 > > --- a/drivers/infiniband/sw/siw/siw_main.c > > +++ b/drivers/infiniband/sw/siw/siw_main.c > > @@ -160,10 +160,8 @@ static int siw_init_cpulist(void) > > > > out_err: > > siw_cpu_info.num_nodes = 0; > > - while (i) { > > + while (--i >= 0) > > kfree(siw_cpu_info.tx_valid_cpus[i]); > > - siw_cpu_info.tx_valid_cpus[i--] = NULL; > > - } > > kfree(siw_cpu_info.tx_valid_cpus); > > siw_cpu_info.tx_valid_cpus = NULL; > > > > -- > > 2.20.1 > > > > > > Dan, many thanks for finding and fixing this! > > > Reviewed-by: Bernard Metzler <bmt@xxxxxxxxxxxxxx> > Thanks, applied to for-rc. -- Doug Ledford <dledford@xxxxxxxxxx> GPG KeyID: B826A3330E572FDD Fingerprint = AE6B 1BDA 122B 23B4 265B 1274 B826 A333 0E57 2FDD
Attachment:
signature.asc
Description: This is a digitally signed message part