]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
dax/bus: Use dax_region_put() in alloc_dax_region() error path
authorSmita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
Sun, 22 Mar 2026 19:53:34 +0000 (19:53 +0000)
committerDave Jiang <dave.jiang@intel.com>
Fri, 27 Mar 2026 17:14:58 +0000 (10:14 -0700)
alloc_dax_region() calls kref_init() on the dax_region early in the
function, but the error path for sysfs_create_groups() failure uses
kfree() directly to free the dax_region. This bypasses the kref lifecycle.

Use dax_region_put() instead to handle kref lifecycle correctly.

Suggested-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Signed-off-by: Smita Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Link: https://patch.msgid.link/20260322195343.206900-2-Smita.KoralahalliChannabasappa@amd.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
drivers/dax/bus.c

index c94c09622516e023073174115a7d2a872669973b..299134c9b2946c20e02da6f84c1c8a5015f6d67b 100644 (file)
@@ -668,7 +668,7 @@ struct dax_region *alloc_dax_region(struct device *parent, int region_id,
        };
 
        if (sysfs_create_groups(&parent->kobj, dax_region_attribute_groups)) {
-               kfree(dax_region);
+               dax_region_put(dax_region);
                return NULL;
        }