Re: [PATCH] libnvdimm: Fix memory leak in error path.

From: Johannes Thumshirn
Date: Wed Aug 03 2016 - 10:24:40 EST


On Wed, Aug 03, 2016 at 07:12:51AM -0700, Dan Williams wrote:
> On Wed, Aug 3, 2016 at 7:01 AM, Johannes Thumshirn <jthumshirn@xxxxxxx> wrote:
> > If either device_register() or nvdimm_bus_create_ndclt() fails we leak the
> > memory allocated for nvdimm_bus. Call kfree(nvdimm_bus) in the error path so
> > it's not leaked.
> >
> > Signed-off-by: Johannes Thumshirn <jthumshirn@xxxxxxx>
> > ---
> > drivers/nvdimm/core.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/nvdimm/core.c b/drivers/nvdimm/core.c
> > index be89764..8578365 100644
> > --- a/drivers/nvdimm/core.c
> > +++ b/drivers/nvdimm/core.c
> > @@ -366,6 +366,7 @@ struct nvdimm_bus *__nvdimm_bus_register(struct device *parent,
> > return nvdimm_bus;
> > err:
> > put_device(&nvdimm_bus->dev);
> > + kfree(nvdimm_bus);
> > return NULL;
> > }
> > EXPORT_SYMBOL_GPL(__nvdimm_bus_register);
> > --
>
> This routine as moved to drivers/nvdimm/bus.c and I don't think this
> is valid since device_register() initialize the reference count, and
> the call to put_device() will trigger nvdimm_bus_release().

Which is correct...

Sorry for the unnecessary patch.

Johannes
--
Johannes Thumshirn Storage
jthumshirn@xxxxxxx +49 911 74053 689
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)
Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850