[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250307063534.540-5-rakie.kim@sk.com>
Date: Fri, 7 Mar 2025 15:35:33 +0900
From: Rakie Kim <rakie.kim@...com>
To: gourry@...rry.net
Cc: akpm@...ux-foundation.org,
linux-mm@...ck.org,
linux-kernel@...r.kernel.org,
linux-cxl@...r.kernel.org,
joshua.hahnjy@...il.com,
dan.j.williams@...el.com,
ying.huang@...ux.alibaba.com,
kernel_team@...ynix.com,
honggyu.kim@...com,
yunjeong.mun@...com,
rakie.kim@...com
Subject: [PATCH 4/4] mm/mempolicy: Fix memory leaks in mempolicy_sysfs_init()
Improper cleanup of sysfs attributes caused kobject and memory leaks when
initialization failed or nodes were removed.
This patch ensures proper deallocation of kobjects and memory, preventing
resource leaks and improving stability.
Signed-off-by: Rakie Kim <rakie.kim@...com>
---
mm/mempolicy.c | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 2d19434c61ed..441a0635e81d 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -3604,47 +3604,47 @@ static int __init mempolicy_sysfs_init(void)
int err;
static struct kobject *mempolicy_kobj;
- mempolicy_kobj = kzalloc(sizeof(*mempolicy_kobj), GFP_KERNEL);
- if (!mempolicy_kobj) {
- err = -ENOMEM;
- goto err_out;
- }
-
ngrp = kzalloc(sizeof(*ngrp), GFP_KERNEL);
if (!ngrp) {
err = -ENOMEM;
- goto mempol_out;
+ goto err_out;
}
mutex_init(&ngrp->kobj_lock);
ngrp->nattrs = kcalloc(nr_node_ids, sizeof(struct iw_node_attr *),
- GFP_KERNEL);
+ GFP_KERNEL);
if (!ngrp->nattrs) {
err = -ENOMEM;
goto ngrp_out;
}
+ mempolicy_kobj = kzalloc(sizeof(*mempolicy_kobj), GFP_KERNEL);
+ if (!mempolicy_kobj) {
+ err = -ENOMEM;
+ goto nattr_out;
+ }
+
err = kobject_init_and_add(mempolicy_kobj, &mempolicy_ktype, mm_kobj,
"mempolicy");
- if (err)
- goto node_out;
+ if (err) {
+ kobject_put(mempolicy_kobj);
+ goto err_out;
+ }
err = add_weighted_interleave_group(mempolicy_kobj);
if (err) {
- pr_err("mempolicy sysfs structure failed to initialize\n");
kobject_put(mempolicy_kobj);
- return err;
+ goto err_out;
}
- return err;
-node_out:
+ return 0;
+
+nattr_out:
kfree(ngrp->nattrs);
ngrp_out:
kfree(ngrp);
-mempol_out:
- kfree(mempolicy_kobj);
err_out:
- pr_err("failed to add mempolicy kobject to the system\n");
+ pr_err("mempolicy sysfs structure failed to initialize\n");
return err;
}
--
2.34.1
Powered by blists - more mailing lists