Vaibhav Jain <vaibhav@xxxxxxxxxxxxx> writes: > String 'bus_desc.provider_name' allocated inside > of_pmem_region_probe() will leak in case call to nvdimm_bus_register() > fails or when of_pmem_region_remove() is called. > > This minor patch ensures that 'bus_desc.provider_name' is freed in > error path for of_pmem_region_probe() as well as in > of_pmem_region_remove(). > > Cc: stable@xxxxxxxxxxxxxxx > Fixes:49bddc73d15c2("libnvdimm/of_pmem: Provide a unique name for bus provider") > Signed-off-by: Vaibhav Jain <vaibhav@xxxxxxxxxxxxx> > --- > drivers/nvdimm/of_pmem.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/nvdimm/of_pmem.c b/drivers/nvdimm/of_pmem.c > index 8224d1431ea9..9cb76f9837ad 100644 > --- a/drivers/nvdimm/of_pmem.c > +++ b/drivers/nvdimm/of_pmem.c > @@ -36,6 +36,7 @@ static int of_pmem_region_probe(struct platform_device *pdev) > > priv->bus = bus = nvdimm_bus_register(&pdev->dev, &priv->bus_desc); > if (!bus) { > + kfree(priv->bus_desc.provider_name); > kfree(priv); > return -ENODEV; > } > @@ -81,6 +82,7 @@ static int of_pmem_region_remove(struct platform_device *pdev) > struct of_pmem_private *priv = platform_get_drvdata(pdev); > > nvdimm_bus_unregister(priv->bus); > + kfree(priv->bus_desc.provider_name); > kfree(priv); > > return 0; Reviewed-by: Jeff Moyer <jmoyer@xxxxxxxxxx>