ACPI: HMAT: Release platform device in case of platform_device_add_data() fails
authorLin Yujun <linyujun809@huawei.com>
Wed, 14 Sep 2022 03:37:55 +0000 (11:37 +0800)
committerDan Williams <dan.j.williams@intel.com>
Fri, 30 Sep 2022 00:54:29 +0000 (17:54 -0700)
The platform device is not released when platform_device_add_data()
fails. And platform_device_put() perfom one more pointer check than
put_device() to check for errors in the 'pdev' pointer.

Use platform_device_put() to release platform device in
platform_device_add()/platform_device_add_data()/
platform_device_add_resources() error case.

Fixes: c01044cc8191 ("ACPI: HMAT: refactor hmat_register_target_device to hmem_register_device")
Signed-off-by: Lin Yujun <linyujun809@huawei.com>
Link: https://lore.kernel.org/r/20220914033755.99924-1-linyujun809@huawei.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/dax/hmem/device.c

index cb6401c9e9a4fcb69c501bdfd90cb82d79bba71d..f87ae005431a5de0864c3e67d288562ee2ffac85 100644 (file)
@@ -47,7 +47,7 @@ void hmem_register_device(int target_nid, struct resource *r)
        rc = platform_device_add_data(pdev, &info, sizeof(info));
        if (rc < 0) {
                pr_err("hmem memregion_info allocation failure for %pr\n", &res);
-               goto out_pdev;
+               goto out_resource;
        }
 
        rc = platform_device_add_resources(pdev, &res, 1);
@@ -65,7 +65,7 @@ void hmem_register_device(int target_nid, struct resource *r)
        return;
 
 out_resource:
-       put_device(&pdev->dev);
+       platform_device_put(pdev);
 out_pdev:
        memregion_free(id);
 }