On Wed, Aug 3, 2016 at 7:01 AM, Johannes Thumshirn <[email protected]> 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 <[email protected]> > --- > 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().

