Message ID | 1470232916-82917-1-git-send-email-jthumshirn@suse.de (mailing list archive) |
---|---|
State | Rejected |
Headers | show |
On Wed, Aug 3, 2016 at 7:01 AM, Johannes Thumshirn <jthumshirn@suse.de> 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@suse.de> > --- > 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().
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@suse.de> 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@suse.de> > > --- > > 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
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);
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@suse.de> --- drivers/nvdimm/core.c | 1 + 1 file changed, 1 insertion(+)