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 A306EC282EC for ; Fri, 14 Mar 2025 07:44:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BE580280002; Fri, 14 Mar 2025 03:44:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B95E6280001; Fri, 14 Mar 2025 03:44:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A5D14280002; Fri, 14 Mar 2025 03:44:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 89E90280001 for ; Fri, 14 Mar 2025 03:44:43 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 62719A9329 for ; Fri, 14 Mar 2025 07:44:44 +0000 (UTC) X-FDA: 83219369688.26.E5CBB53 Received: from invmail4.hynix.com (exvmail4.skhynix.com [166.125.252.92]) by imf17.hostedemail.com (Postfix) with ESMTP id C3ADB40003 for ; Fri, 14 Mar 2025 07:44:41 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf17.hostedemail.com: domain of rakie.kim@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=rakie.kim@sk.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741938282; 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; bh=vUODur+EfrGKsXZcsPT+s6cqJdGZzpwk7VvA+K6+1iQ=; b=CV7AhcKYDP5CCR6RMQ4516HnLflqkvjpdC47gI50OJbx5jM5rwpP5UEsvO4uEM3wIR1Auw HaUObz8PO95Q4K9TAX+5osgMAWiUcrXUROLSlGf+Q2rhslYx/ehtvJucGc3l8vuZH7TSnz /mw4Tj/G8NChZpUqKKbzQQs99uSMPfU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741938282; a=rsa-sha256; cv=none; b=kDJTAvMC1EibOAuKWJ5y+i2CfNs6pZlCO30CBSsuZ7Y8IpBIXlaIC3wNpV2FHL0rtIeIYW agK2iteDbdYyyUkZrxYQoq98+tUjHT0YjC61WGvSZfEcjlr2nTmAuFHMgHi7yrwGN4DK43 ePAJu+6i/VWk0YwHS+SQkAbf8M8/Zew= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf17.hostedemail.com: domain of rakie.kim@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=rakie.kim@sk.com X-AuditID: a67dfc5b-681ff7000002311f-a6-67d3de65ef9c From: Rakie Kim To: Gregory Price Cc: akpm@linux-foundation.org, 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, kernel_team@skhynix.com, honggyu.kim@sk.com, yunjeong.mun@sk.com, Rakie Kim Subject: Re: [PATCH v2 1/4] mm/mempolicy: Fix memory leaks in mempolicy_sysfs_init() Date: Fri, 14 Mar 2025 16:44:11 +0900 Message-ID: <20250314074433.780-1-rakie.kim@sk.com> X-Mailer: git-send-email 2.48.1.windows.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrNLMWRmVeSWpSXmKPExsXC9ZZnkW7qvcvpBqeOqVnMWb+GzWL61AuM Fj/vHme3OL51HrvF+VmnWCwu75rDZnFvzX9Wi9VrMhw4PHbOusvu0d12md1j8Z6XTB6bPk1i 9zgx4zeLx86Hlh6fN8kFsEdx2aSk5mSWpRbp2yVwZWxf94a94JZUxcz3txgbGM+JdDFyckgI mEisaNzBDGO/WL8OyObgYBNQkji2NwbEFBFQlWi74t7FyMXBLLCeSeL1pllsIOXCAiES624t ZgexWYBquo/NZQep5xUwlpgwswhioqZEw6V7TCA2p4CZxIS928HKhQR4JF5t2M8IYvMKCEqc nPmEBcRmFpCXaN46mxlkl4TAGTaJie8esUMMkpQ4uOIGywRG/llIemYh6VnAyLSKUSgzryw3 MTPHRC+jMi+zQi85P3cTIzCIl9X+id7B+OlC8CFGAQ5GJR7eDbsupQuxJpYVV+YeYpTgYFYS 4bW4fDldiDclsbIqtSg/vqg0J7X4EKM0B4uSOK/Rt/IUIYH0xJLU7NTUgtQimCwTB6dUA6Pw /Ig+v1DByaKfo9VjXbsPm4YZTp5ZoJv/ZtaK+EUFfW8FO05nL7h55cqj1Krwe40nFXRDQrXv 8rCVaXy9M3U9i8PaykRdw4x7fxjz6y6L7OyprcgIO/x+z76ECY8SC4wC90fPVz22bbaZk8OE 1G+3qtlkpr1v2Lk1d/3th+sEsoorkmKXPVRiKc5INNRiLipOBAAtAxLgXgIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrKLMWRmVeSWpSXmKPExsXCNUNNSzf13uV0g8dHxSzmrF/DZjF96gVG i593j7NbfH72mtni+NZ57BaH555ktTg/6xSLxeVdc9gs7q35z2px6NpzVovVazIsfm9bwebA 47Fz1l12j+62y+wei/e8ZPLY9GkSu8eJGb9ZPHY+tPT4dtvDY/GLD0wenzfJBXBGcdmkpOZk lqUW6dslcGVsX/eGveCWVMXM97cYGxjPiXQxcnJICJhIvFi/jrmLkYODTUBJ4tjeGBBTREBV ou2KexcjFwezwHomidebZrGBlAsLhEisu7WYHcRmAarpPjaXHaSeV8BYYsLMIoiJmhINl+4x gdicAmYSE/ZuBysXEuCReLVhPyOIzSsgKHFy5hMWEJtZQF6ieets5gmMPLOQpGYhSS1gZFrF KJKZV5abmJljqlecnVGZl1mhl5yfu4kRGLjLav9M3MH45bL7IUYBDkYlHt4Nuy6lC7EmlhVX 5h5ilOBgVhLhtbh8OV2INyWxsiq1KD++qDQntfgQozQHi5I4r1d4aoKQQHpiSWp2ampBahFM lomDU6qB8aKTlJnOix/t0/WKP0Tt3jahb0+Aqt1vsRcXHGoai7xvirr+Zjwwz/TJnvrtfAXr ORQ2HHg5p5CHucrpQ/jas5q3q1bebNof5fL92f+s61ESib1aEgo68yb0fRYxUpN5WHDtudmR L3w1v0U8ru2bcTzmpAlTSNn+sCmOU1iOyStbzr/6tulqohJLcUaioRZzUXEiAOU/NchYAgAA X-CFilter-Loop: Reflected X-Rspam-User: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: C3ADB40003 X-Stat-Signature: krneue5go9pgq8xouhgxpez4gp6bi93x X-HE-Tag: 1741938281-819335 X-HE-Meta: U2FsdGVkX1/1S3DoR/A0zfCIxeKhI3ILrf0XQ0PGKIyE6gxYJgY6CYd0nck6TUDifDI1EK8SoDQ2AU4P8IDZ0/h8MlL5KXnKZvj/geYb4jK8/YUjVZZhB6EUUvuVi9hxgfJi1v+aFejiw9CtbTPFeXxrWrT2t769W47mWX21aNb3KxHAQsuAYwG1/jAGfRqtg4lZKUpmJYK8HbxJnjyaF/Tfhc4V3Sm1En24ooQVgJ5T5CyZ6okku+DITIxNjm1wmAhtZANfvCINTqjyBjtI696Kd/4emhe0DGcrA0bw7gIRgyM3Ht+2SnnC98zcos77G0Z3khKgWKTPp0GpOPJo0fDU3ypnkeMYpLmNJEy+8GkgsY4tE+WqC7r3J4LL4kTlOAqsRn6rZ4tEtPZ3a60fQuwUMZlVG1mpo/GkX8Nmy07AIGvZ62iWknDqeExS2nyB33cjyz5B1Uj+kxii9RAdhBRPbs57SEIijf0QE7PcrUJurqgFg3zaJxUDn2xEO8tFIx+TXL6sYap7XN/ftWjigorjcFSEDeowMjkqlWCqw0inAXNDZmYD3JREM4sNSSL/rtO1Ohp0kNziAfJTgL/QJCtr8XDRDedo9j4ayuESH7zb5HKHBD4J9w0DYvTc7pHFpxyCZo9FfTD3cbgalFi9X+qN/FJtng/qTAo2wvW2ciDx7gTBybyjSGCwsw1GdxaEekp8O9J6Qp8PwnQ/FxUHVHZyyIsIqob2K7NdUsT95PHarExgzZ1ocVchTbW5VadOudlGP0ay4Tfjs7AweBzH3HxeIuxZwqfGdt3jqUITlIF1DwuJBPYEty41xCXz9IrVhvdRZEIwIQemCC3qYXjWKNefCcqUV5ktP1wjSx38Tk8IOWwECw3JecwOnbiLxz5FjxNLBYopNc6Qlj6nRPQZckuCQviwL548iZwaJB5ltqTxiaazs+M2MpoQLtBeMTW3gjsrlFqKwmR1OnDaiiA 9uBj4sg4 LufEzMp7eH6+IuFWrvB9n++KV3hQH74c6+iJibcIkoF/s6QX9LixES5MqDa1dwwolZG7D5MFiNJhEtbgnP2bnL9O2/gnstqoS7nD9AtEQ/GHDssCzG2rQOWB/HeVS8M+o6CPNv7qwZxzAaGhSelkygaDx7w== 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 Thu, 13 Mar 2025 11:52:18 -0400 Gregory Price wrote: > On Thu, Mar 13, 2025 at 03:31:38PM +0900, Rakie Kim wrote: > > > Is this correct? If kobject_init_and_add fails, from other examples we > > > need only free the mempolicy_kobj - because it failed to initialize and > > > therefore should not have any references. I think this causes an > > > underflow. > > > > Regarding the reordering of mempolicy_kobj allocation: > > 1) In kobject_init_and_add(), kobject_init() is always called, which > > Quite right, mea culpa. > > > > > 2) The release function for mempolicy_kobj is responsible for freeing > > associated memory: > > > > static void mempolicy_kobj_release(struct kobject *kobj) > > { > > ... > > kfree(ngrp->nattrs); > > kfree(ngrp); > > kfree(kobj); > > } > > > > I see what you're trying to do now after looking at the free-ordering > at little closer. > > Lets do the following: > > 1) allocate node_attrs and mempolicy_kobj up front and keep your > reordering, this lets us clean up allocations on failure before > kobject_init is called > > 2) after this remove all the other code and just let > mempolicy_kobj_release clean up node_attrs > > 3) Add a (%d) to the error message to differentiate failures > > This is a little bit cleaner and is a bit less code. (Not built or > tested, just a recommendation). > > I'd recommend submitting this patch by itself to mm-stable, since the > remainder of the patch line changes functionality and this fixes a bug > in LTS kernels. > > ~Gregory > I will make every effort to incorporate your suggestions. Additionally, I will separate this patch from the current patch series and create it as an independent patch. Rakie > > > diff --git a/mm/mempolicy.c b/mm/mempolicy.c > index 530e71fe9147..05a410db08b4 100644 > --- a/mm/mempolicy.c > +++ b/mm/mempolicy.c > @@ -3541,38 +3541,34 @@ 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) { > + node_attrs = kcalloc(nr_node_ids, sizeof(struct iw_node_attr *), > + GFP_KERNEL); > + if (!node_attrs) { > err = -ENOMEM; > goto err_out; > } > > - node_attrs = kcalloc(nr_node_ids, sizeof(struct iw_node_attr *), > - GFP_KERNEL); > - if (!node_attrs) { > + mempolicy_kobj = kzalloc(sizeof(*mempolicy_kobj), GFP_KERNEL); > + if (!mempolicy_kobj) { > err = -ENOMEM; > - goto mempol_out; > + kfree(node_attrs); > + goto err_out; > } > > err = kobject_init_and_add(mempolicy_kobj, &mempolicy_ktype, mm_kobj, > "mempolicy"); > if (err) > - goto node_out; > + goto mempol_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; > - } > + if (err) > + goto mempol_out; > > - return err; > -node_out: > - kfree(node_attrs); > + return 0; > mempol_out: > - kfree(mempolicy_kobj); > + kobject_put(mempolicy_kobj); > err_out: > - pr_err("failed to add mempolicy kobject to the system\n"); > + pr_err("mempolicy sysfs structure failed to initialize (%d)\n", err); > return err; > } >