From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D3D51C369A2 for ; Tue, 8 Apr 2025 13:45:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 787BC6B000E; Tue, 8 Apr 2025 09:45:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7438D6B0010; Tue, 8 Apr 2025 09:45:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5D80E6B0011; Tue, 8 Apr 2025 09:45:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 379476B000E for ; Tue, 8 Apr 2025 09:45:22 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id C4E3C140A04 for ; Tue, 8 Apr 2025 13:45:22 +0000 (UTC) X-FDA: 83310998484.27.A0B1F56 Received: from mail-yw1-f182.google.com (mail-yw1-f182.google.com [209.85.128.182]) by imf15.hostedemail.com (Postfix) with ESMTP id EB473A0003 for ; Tue, 8 Apr 2025 13:45:20 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=HCx1xa1l; spf=pass (imf15.hostedemail.com: domain of joshua.hahnjy@gmail.com designates 209.85.128.182 as permitted sender) smtp.mailfrom=joshua.hahnjy@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744119921; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Dw7kJPJQYjxaMDo7nd/b+XbBOuOHAwMDyUEb/lvDyhg=; b=XMdXjVzpBW9di2C0KPKRNZqyUji5+drzHxz6MxFr+uwg+yh4rFz9e0envdIYPQyOHILjKM 6bILA6k2yoxZDl2BzfPeOwLzJWb8Hpogd4sf/Gl0UoujbXRGc/TiHdJ2NmIg3JN/1YXJXf of8VuQZraVqlXvdx4mEZkNnZB+RX/c4= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=HCx1xa1l; spf=pass (imf15.hostedemail.com: domain of joshua.hahnjy@gmail.com designates 209.85.128.182 as permitted sender) smtp.mailfrom=joshua.hahnjy@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744119921; a=rsa-sha256; cv=none; b=b9qa6wx9Bk1FxyXKvKQmhDKWDWhqN0NjS2IKDoK455AQbJMCKesSJfwYo7fFh7T18VvGi5 Z047I5aPgjMfmlvgxjGpcs1+JZCDIW+1Bdl3LkFfudykzC+gJYv9eq6vqfDt2hIjacaSpV w18elITJJ9c7yXRNPkIO+IM2kTIrx2w= Received: by mail-yw1-f182.google.com with SMTP id 00721157ae682-6f666c94285so61693087b3.3 for ; Tue, 08 Apr 2025 06:45:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744119920; x=1744724720; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Dw7kJPJQYjxaMDo7nd/b+XbBOuOHAwMDyUEb/lvDyhg=; b=HCx1xa1ly6TUoNnb7+Q1dgImQ2e2ceuqMTFdCOAWZN61l0t7rWIAIM0VPhOT0OYCyG 7vYwIl2dPY4VoUhBKLeYAXBC3vN/ZSKlPdPc/x976KTaoZ8hBMwQZRh1XG946qpi3HqM Jm4C4nH4DW2w/xMP1ZMvyOmEss2e2hGdchihxO/Vhb72DjKirxCtoW2T3nloS0AKZ8MT 7F/Yh6T3mFJ0Fx8sMEfx3JlUxz6v936pJEodj1gCN9zbwB0dKl3eAw47fOUsGgTzMknC xBjeoadLY+MZfYxd24Z3iIGPE9SMUhqYHnPRMouhrV5mLZ4l9QxzjqqejXtg6rOTW+pf Cquw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744119920; x=1744724720; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Dw7kJPJQYjxaMDo7nd/b+XbBOuOHAwMDyUEb/lvDyhg=; b=KA05HkI3h5QYSqxlfVED82BhFt1tlek6dvn0eXvpULARwHFqoVNKQ5TNU5vk8Zii5v vtYNC/Jth5iEoh/H1f0EaNP3EerjnQNZBQHsML1hlemC4kXzFAN4UYu17Y4DwJOu/BiL KF7ODo5eEagZwpesLisBiCz+MiM5xFoynWWaDMcXAMLJnUQhVo1s9IYkKwU1qXZvgQv5 2eQOr4QgYIDMqKopgOiGo1Qm/IR/Lqcxfl+zRIO19OEDf6d+qzrpiQtQKre57xZMS7QB 1jK3aAU4wGwacd8ZBdhWH/Tsvxl/ZIw6itirZn1sgr/+eS8TcHkSwNl3eHwD/6U4kZWm uBdw== X-Forwarded-Encrypted: i=1; AJvYcCVOBabILmLpWh1uUZ4GXOlPxq5ILYIThqe3MxflKIN4bOrgCqEY7ifhKlNbfCFRIUPwNHnl1UFdMQ==@kvack.org X-Gm-Message-State: AOJu0YyELbH3JanUAoHwqT7nnplQI1c1Jnga8JVkQqqIRhwHIlKqjNaL ps9pUxVMP9zntHP6gtxcKQxB+IhXr2l0380HrGkE+lqoXMskz8Sb X-Gm-Gg: ASbGncuTOoREMcFXvKO4EyTY1g3fZY1Fg+7lY09bC+au8XOrYtTrjf8iIX/hWTwrnw8 Vw5kVCt3+Y/5SAjO92o4R10BuJPml+KxCOJ+lK9T2RqjD9/PhKh2wGIt1RPRF0pJ7oe5mq08qdS fCPTfYzZXnwdAaPdeYR1eiGPLDNAq8DRM/IGwvHWAplfiFui847OyI2sNf24PJzXq1i4u7HrdoT pPZy/hF8qCosG5G97+xC8BojDLN+drAJ5EFHrSWx+nmzPW7nBMXTrg2DD9cq2djq9i4csV2J4kg Qn4UOVXTwAWK4OcDp2YPiAzawKox6C7nmWwsGJ7sr2s= X-Google-Smtp-Source: AGHT+IHDxXOXAIt3KXx6UHSUynoTCZwbV0/9Izo05tTRDzAD3JSCLU0CPGbeASO9hlZh4g0QmhvDhg== X-Received: by 2002:a05:690c:7006:b0:6f9:b12b:8953 with SMTP id 00721157ae682-703f4196e1fmr221965077b3.20.1744119919840; Tue, 08 Apr 2025 06:45:19 -0700 (PDT) Received: from localhost ([2a03:2880:25ff:6::]) by smtp.gmail.com with ESMTPSA id 00721157ae682-703d1e4dedasm31013877b3.27.2025.04.08.06.45.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 06:45:19 -0700 (PDT) From: Joshua Hahn To: Rakie Kim Cc: akpm@linux-foundation.org, gourry@gourry.net, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-cxl@vger.kernel.org, joshua.hahnjy@gmail.com, dan.j.williams@intel.com, ying.huang@linux.alibaba.com, david@redhat.com, Jonathan.Cameron@huawei.com, osalvador@suse.de, kernel_team@skhynix.com, honggyu.kim@sk.com, yunjeong.mun@sk.com Subject: Re: [PATCH v7 1/3] mm/mempolicy: Fix memory leaks in weighted interleave sysfs Date: Tue, 8 Apr 2025 06:45:16 -0700 Message-ID: <20250408134517.2967112-1-joshua.hahnjy@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250408073243.488-2-rakie.kim@sk.com> References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: EB473A0003 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: 7x96zzrnixeiypj9dbhzo6t81iewttne X-HE-Tag: 1744119920-466024 X-HE-Meta: U2FsdGVkX1/QdshWRoMzYcuMEfvnIsb2LwzmOMqXocxwFThGu5t9IoN5CuwVqIdVKnR96atXtfo/FFyaSBxWGVyeZ3e5zoa6+6qXMItf1BadMoLT8r4avIQbYfeYitjhNmsRBGHNRsb0YH6nT5y6z+I7JHgzZMhKB72XPjplnKBThfX3SJ9pUib6gbs0dibD10YkcB98rzQs/Zx9D2yVXgAZTuor+o6EiCUj0cu/c7oZu+0TRxFPFJ+DEfoDJioPCpPlXLttKOxBQVJiz7aJd0T575vQ4mXCLQNPHXh1uHPw+LLlo+cmfieo6oqL2VEt4ghQ+cwWVd4ptDZ2OQgkrYZGw1Wz+y8gEJyZHDHe5BjsIXzKOY1JJylaOpjAT1GWe2As85wYUWUga432PpR7ggMm33FrFH4ONp/PpV1uIU7aHMnM6yJ0v1N5PbuG7PO8AgUpmkWc1YZav3mEQVbPqMZua45osxKpDjY9yC1s8lWMYyx6IJhp3zBhVSUAYFWx1mFyGzitJM7LFK7qADC/0V29pmifs0wdMYjP3XZWa9n5YqTYbvmayqqQtHd1YXNEr/lIx6o+iOWfLRAjvwlicsa9BZ9yIkuxibx4/myN3r8jImAWFkNzDQ4yQ7xlnEQRWmrrs/YJZYjFfMO3u6PlTvaFC6RFJdlL2YQHDdrmZXlSIY53ckjbKBgq2n8kqO+vRx9s4+Qcf1F6yASicnUMZISm5elGLwiWJeIhADOSic34pB9PXzbWS3kRQ+YMz8dwFt6LEzRIEQDJEuhzBkPcazuOcmiNFhCgoVwSPNxpQ8dxWfaU37VJyfFJf+ny7wy5x8pZgowMCJaH66VN3VSvfO1mFu1RolXqeQAZYVy8ef0FFwfdPTS2tX1XKbi3ZK+VZQNVA9Dcbv69RYOXUjiHFeSaK6jIqXNcbxepuQgMCrWA6wzTzxPEIo4y5rGUnxd0msmEapc+mBcFMUOWvzk IyRq6avv vxhLERQ2YIHQBIZTWsmuvFhO+Wl2X0UphqpWGsLIulzqRonyxnpOCvhyiDhYdnf3E3sHODkKuGVf0c7HCyt+Api66v8vSsmz7C8e2b6aG6zPkW4zhzJjz8eNvQfq+wDah0c0zWbaMB4zP6sOscvJ/lSw7sWjjWHOidQC5IkbIGZQd8NHHoCuVCemvwuE4ObZxCTcrXFdRYaHksG3kfxOo3IoWf2ws1TDN72xtwdNQ80yhMNthCDpThUu3GqUAjsK6ALM0M72kU9knGpmcwnRLe8VNWvvA4PZN0HNYTfVZhP6Ut+JR4OH0ayFmDu7WcA31K7LOOiozWH3l/96Y7ffM4IRgHcJ4EpNGgHo3HAtHu4onC+gRU8N1AikicC8gKi7IVHPLlLxWklV4Dg5pCR7DNdkJlcAXmNCtmPX/sh94/pOp1TG+9TJ0caxhk/AS7/w1D0WkKKvCyw4LCXxcT5fsIgulUx8oNVMYGnRBnyhFUd4mVSl9baWokNgPNF7PtwEbOV39Y0hxoXE/cQHROvQ7T4Z5M0d9fV6krZYg7dpR/E4Z+IP3ICuhxoFB80ZMyAWz5i3XjPBbg2JscQtb4cTthiPlah9S9R7zLZZFAN29OAdmMhMSDLqr/bODwKWXs2kVd/ZMetC5E4YcXXOX5zuIzkZMvJL2M04ThJL5Sbpsl0EqyjI= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, 8 Apr 2025 16:32:40 +0900 Rakie Kim wrote: Hi Rakie, Thank you for your work on this fix! Everything looks good to me : -) Reviewed-by: Joshua Hahn > Memory leaks occurred when removing sysfs attributes for weighted > interleave. Improper kobject deallocation led to unreleased memory > when initialization failed or when nodes were removed. > > This patch resolves the issue by replacing unnecessary `kfree()` > calls with proper `kobject_del()` and `kobject_put()` sequences, > ensuring correct teardown and preventing memory leaks. > > By explicitly calling `kobject_del()` before `kobject_put()`, > the release function is now invoked safely, and internal sysfs > state is correctly cleaned up. This guarantees that the memory > associated with the kobject is fully released and avoids > resource leaks, thereby improving system stability. > > Fixes: dce41f5ae253 ("mm/mempolicy: implement the sysfs-based weighted_interleave interface") > Signed-off-by: Rakie Kim > Signed-off-by: Honggyu Kim > Signed-off-by: Yunjeong Mun > Reviewed-by: Gregory Price > --- > mm/mempolicy.c | 66 ++++++++++++++++++++++++-------------------------- > 1 file changed, 32 insertions(+), 34 deletions(-) > > diff --git a/mm/mempolicy.c b/mm/mempolicy.c > index b28a1e6ae096..0da102aa1cfc 100644 > --- a/mm/mempolicy.c > +++ b/mm/mempolicy.c > @@ -3479,7 +3479,9 @@ static void sysfs_wi_release(struct kobject *wi_kobj) > > for (i = 0; i < nr_node_ids; i++) > sysfs_wi_node_release(node_attrs[i], wi_kobj); > - kobject_put(wi_kobj); > + > + kfree(node_attrs); > + kfree(wi_kobj); > } > > static const struct kobj_type wi_ktype = { > @@ -3525,27 +3527,37 @@ static int add_weighted_interleave_group(struct kobject *root_kobj) > struct kobject *wi_kobj; > int nid, err; > > + node_attrs = kcalloc(nr_node_ids, sizeof(struct iw_node_attr *), > + GFP_KERNEL); > + if (!node_attrs) > + return -ENOMEM; > + > wi_kobj = kzalloc(sizeof(struct kobject), GFP_KERNEL); > - if (!wi_kobj) > + if (!wi_kobj) { > + kfree(node_attrs); > return -ENOMEM; > + } > > err = kobject_init_and_add(wi_kobj, &wi_ktype, root_kobj, > "weighted_interleave"); > - if (err) { > - kfree(wi_kobj); > - return err; > - } > + if (err) > + goto err_put_kobj; > > for_each_node_state(nid, N_POSSIBLE) { > err = add_weight_node(nid, wi_kobj); > if (err) { > pr_err("failed to add sysfs [node%d]\n", nid); > - break; > + goto err_del_kobj; > } > } > - if (err) > - kobject_put(wi_kobj); > + > return 0; > + > +err_del_kobj: > + kobject_del(wi_kobj); > +err_put_kobj: > + kobject_put(wi_kobj); > + return err; > } > > static void mempolicy_kobj_release(struct kobject *kobj) > @@ -3559,7 +3571,6 @@ static void mempolicy_kobj_release(struct kobject *kobj) > mutex_unlock(&iw_table_lock); > synchronize_rcu(); > kfree(old); > - kfree(node_attrs); > kfree(kobj); > } > > @@ -3573,37 +3584,24 @@ static int __init mempolicy_sysfs_init(void) > static struct kobject *mempolicy_kobj; > > mempolicy_kobj = kzalloc(sizeof(*mempolicy_kobj), GFP_KERNEL); > - if (!mempolicy_kobj) { > - err = -ENOMEM; > - goto err_out; > - } > - > - node_attrs = kcalloc(nr_node_ids, sizeof(struct iw_node_attr *), > - GFP_KERNEL); > - if (!node_attrs) { > - err = -ENOMEM; > - goto mempol_out; > - } > + if (!mempolicy_kobj) > + return -ENOMEM; > > err = kobject_init_and_add(mempolicy_kobj, &mempolicy_ktype, mm_kobj, > "mempolicy"); > if (err) > - goto node_out; > + goto err_put_kobj; > > err = add_weighted_interleave_group(mempolicy_kobj); > - if (err) { > - pr_err("mempolicy sysfs structure failed to initialize\n"); > - kobject_put(mempolicy_kobj); > - return err; > - } > + if (err) > + goto err_del_kobj; > > - return err; > -node_out: > - kfree(node_attrs); > -mempol_out: > - kfree(mempolicy_kobj); > -err_out: > - pr_err("failed to add mempolicy kobject to the system\n"); > + return 0; > + > +err_del_kobj: > + kobject_del(mempolicy_kobj); > +err_put_kobj: > + kobject_put(mempolicy_kobj); > return err; > } > > -- > 2.34.1 Sent using hkml (https://github.com/sjp38/hackermail)