Message ID | 20221123134527.119441-1-xiujianfeng@huawei.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | libnvdimm/of_pmem: Fix memory leak in of_pmem_region_probe() | expand |
Hi, Thanks for resolving it. All looks good. Except a thing, there is no check for return status of ksrdup too. that can also be part of this patch. On Nov 23 2022, Xiu Jianfeng wrote: > After changes in commit 49bddc73d15c ("libnvdimm/of_pmem: Provide a unique > name for bus provider"), @priv->bus_desc.provider_name is no longer a > const string, but a dynamic string allocated by kstrdup(), it should be > freed on the error path, and when driver is removed. > > Fixes: 49bddc73d15c ("libnvdimm/of_pmem: Provide a unique name for bus provider") > Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com> > --- > 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 10dbdcdfb9ce..1292ffca7b2e 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; > } > @@ -83,6 +84,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; > -- > 2.17.1 >
Hi, 在 2022/11/23 22:53, Tarun Sahu 写道: > Hi, > Thanks for resolving it. > > All looks good. Except a thing, there is no check for return status of > ksrdup too. that can also be part of this patch. Thanks for review, already sent v2. > > On Nov 23 2022, Xiu Jianfeng wrote: >> After changes in commit 49bddc73d15c ("libnvdimm/of_pmem: Provide a unique >> name for bus provider"), @priv->bus_desc.provider_name is no longer a >> const string, but a dynamic string allocated by kstrdup(), it should be >> freed on the error path, and when driver is removed. >> >> Fixes: 49bddc73d15c ("libnvdimm/of_pmem: Provide a unique name for bus provider") >> Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com> >> --- >> 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 10dbdcdfb9ce..1292ffca7b2e 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; >> } >> @@ -83,6 +84,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; >> -- >> 2.17.1 >> > . >
diff --git a/drivers/nvdimm/of_pmem.c b/drivers/nvdimm/of_pmem.c index 10dbdcdfb9ce..1292ffca7b2e 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; } @@ -83,6 +84,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;
After changes in commit 49bddc73d15c ("libnvdimm/of_pmem: Provide a unique name for bus provider"), @priv->bus_desc.provider_name is no longer a const string, but a dynamic string allocated by kstrdup(), it should be freed on the error path, and when driver is removed. Fixes: 49bddc73d15c ("libnvdimm/of_pmem: Provide a unique name for bus provider") Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com> --- drivers/nvdimm/of_pmem.c | 2 ++ 1 file changed, 2 insertions(+)