libnvdimm/of_pmem: Use devm_kstrdup instead of kstrdup and check its return value
authorChen Ni <nichen@iscas.ac.cn>
Thu, 14 Sep 2023 07:03:27 +0000 (07:03 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Nov 2023 10:52:05 +0000 (11:52 +0100)
[ Upstream commit 6fd4ebfc4d61e3097b595ab2725d513e3bbd6739 ]

Use devm_kstrdup() instead of kstrdup() and check its return value to
avoid memory leak.

Fixes: 49bddc73d15c ("libnvdimm/of_pmem: Provide a unique name for bus provider")
Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/nvdimm/of_pmem.c

index 10dbdcd..0243789 100644 (file)
@@ -30,7 +30,13 @@ static int of_pmem_region_probe(struct platform_device *pdev)
        if (!priv)
                return -ENOMEM;
 
-       priv->bus_desc.provider_name = kstrdup(pdev->name, GFP_KERNEL);
+       priv->bus_desc.provider_name = devm_kstrdup(&pdev->dev, pdev->name,
+                                                       GFP_KERNEL);
+       if (!priv->bus_desc.provider_name) {
+               kfree(priv);
+               return -ENOMEM;
+       }
+
        priv->bus_desc.module = THIS_MODULE;
        priv->bus_desc.of_node = np;