Re: [PATCH] libnvdimm/of_pmem: Fix memory leak in of_pmem_region_probe()

From: xiujianfeng
Date: Wed Nov 23 2022 - 10:10:15 EST


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@xxxxxxxxxx>
---
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

.