From patchwork Fri Mar 7 06:35:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rakie Kim X-Patchwork-Id: 14006005 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 2C4E1C282DE for ; Fri, 7 Mar 2025 06:35:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 510AA280007; Fri, 7 Mar 2025 01:35:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4C058280003; Fri, 7 Mar 2025 01:35:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 38A9D280007; Fri, 7 Mar 2025 01:35:49 -0500 (EST) 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 19A71280003 for ; Fri, 7 Mar 2025 01:35:49 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 2F3C052910 for ; Fri, 7 Mar 2025 06:35:50 +0000 (UTC) X-FDA: 83193794460.04.E17AE31 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by imf13.hostedemail.com (Postfix) with ESMTP id 3689120003 for ; Fri, 7 Mar 2025 06:35:47 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf13.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=1741329348; 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=OeA8RoaxnPdD0Rk80XX7DkNpmbLbFHC8cy6YA2TiNmE=; b=C196wIVrHhZUAdUSyLSmeBghaAiJ+67QCpAG+n5KqWL7oIRFWftaI7jEVgB3NFLkLqqhfE bmBLOfn81Fc4kheI4692/RWiC9fF2OgZgMqPwloI0B8Ano5T7jpVznNFk+b9WWP43hvUPl cwSC9XARWrGbJxzLovaJuO3M1B43574= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf13.hostedemail.com: domain of rakie.kim@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=rakie.kim@sk.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741329348; a=rsa-sha256; cv=none; b=4xrhSNGvphd9ywJs3JvCauS3mQp6NNHzlAvuXOBquc05X1zQIMCVwD2lEm4susbu9vb9Dp XGN7bh4ChgrsGT1oo2FCLO1d1ShWlFfTHUg25lImQoGG8J82Oiw6Dxzif/j2QW1v5rQOhR YF3rS+DHNWBOiUIMXBhoFtIVJCjTkAE= X-AuditID: a67dfc5b-3c9ff7000001d7ae-7a-67ca93c2fd8a From: Rakie Kim To: gourry@gourry.net 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@sk.com Subject: [PATCH 1/4] mm/mempolicy: Support memory hotplug in weighted interleave Date: Fri, 7 Mar 2025 15:35:30 +0900 Message-ID: <20250307063534.540-2-rakie.kim@sk.com> X-Mailer: git-send-email 2.48.1.windows.1 In-Reply-To: <20250307063534.540-1-rakie.kim@sk.com> References: <20250307063534.540-1-rakie.kim@sk.com> MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrNLMWRmVeSWpSXmKPExsXC9ZZnke6hyafSDX5NF7aYs34Nm8X0qRcY LX7ePc5ucXzrPHaL87NOsVhc3jWHzeLemv+sFqvXZDhweOycdZfdo7vtMrvH4j0vmTw2fZrE 7nFixm8Wj50PLT0+b5ILYI/isklJzcksSy3St0vgymhfO5ul4LJkxZ/ZzSwNjK9Fuhg5OSQE TCQ+felihbGfnL8LZHNwsAkoSRzbGwMSFhEQlZh3dDZLFyMXB7PAYiaJhYfXM4HUCAsESDw6 qQVSwyKgKrHg1X5GEJtXwFhi5d9tzBAjNSUaLt1jArE5gcYfX/WIEaRVCKjm765SiHJBiZMz n7CA2MwC8hLNW2czg6ySEDjDJrH49g52iDmSEgdX3GCZwMg/C0nPLCQ9CxiZVjEKZeaV5SZm 5pjoZVTmZVboJefnbmIEBvGy2j/ROxg/XQg+xCjAwajEw+sx9WS6EGtiWXFl7iFGCQ5mJRFe wc1AId6UxMqq1KL8+KLSnNTiQ4zSHCxK4rxG38pThATSE0tSs1NTC1KLYLJMHJxSDYz5a0MX Tkoq9H9o1Lom/0+lRgnjPRPL36/WLFxeJ9kh8odf2W7pYRXlAk0/Q/P4ZIknIYJrV/uffdxY cyRSlunBwvr83VfuXS/x3BMVPrP4qrCmzPbU5oUNGUcNBFZ1rz6uwnVbRmy5QlaQtMjnLckN r2XbQoVCds7pfHpx5QNv/ZeXi0oKKpRYijMSDbWYi4oTARf6rPteAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrKLMWRmVeSWpSXmKPExsXCNUNNS/fQ5FPpBs+ucVnMWb+GzWL61AuM Fj/vHme3+PzsNbPF8a3z2C0Ozz3JanF+1ikWi8u75rBZ3Fvzn9Xi0LXnrBar12RY/N62gs2B x2PnrLvsHt1tl9k9Fu95yeSx6dMkdo8TM36zeOx8aOnx7baHx+IXH5g8Pm+SC+CM4rJJSc3J LEst0rdL4MpoXzubpeCyZMWf2c0sDYyvRboYOTkkBEwknpy/y9rFyMHBJqAkcWxvDEhYREBU Yt7R2SxdjFwczAKLmSQWHl7PBFIjLBAg8eikFkgNi4CqxIJX+xlBbF4BY4mVf7cxQ4zUlGi4 dI8JxOYEGn981SNGkFYhoJq/u0ohygUlTs58wgJiMwvISzRvnc08gZFnFpLULCSpBYxMqxhF MvPKchMzc0z1irMzKvMyK/SS83M3MQIDd1ntn4k7GL9cdj/EKMDBqMTD6zH1ZLoQa2JZcWXu IUYJDmYlEV7BzUAh3pTEyqrUovz4otKc1OJDjNIcLErivF7hqQlCAumJJanZqakFqUUwWSYO TqkGxgnfEw6mVF0XSp5+wOhMb9hUbffv1zXfC0psWuZ74dS/jnM+GZzHk970s/HUm/+5ea7y 7/LWisKUaxpGvTaiZv82l+mENem7vP615FL5weWWfKHWrD02/9w1vs+b//gC5/vlxyKmrDX/ umfeiV1MT59VS2WfPy37T81BNsDm+88HOT07E+VWflViKc5INNRiLipOBADHSCavWAIAAA== X-CFilter-Loop: Reflected X-Stat-Signature: cq5bskapgxs61hp7z9rqdz635opawgqo X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 3689120003 X-Rspam-User: X-HE-Tag: 1741329347-244990 X-HE-Meta: U2FsdGVkX18Jn72v2//QrRnaaL9q0ghBl5xxKDLxpZl6R0QlbT04YQ2FbnJWgflzGk0F0ieDCdC9Mc+a1O+KiW0NQ66R9/PLRLAmLu9CjF0k1LZEpMHKNrKdW1zonbrXaS+702uPPBQkggNIl8mPNPGGJC7rCEdJPZ24+t8MkSXjY0azR5sLUcJxeIGOr9FWhdPYR5YlO0mBWPiAmFV8z19ph7NoGtdWFZWpQ2hJtquj8A2Ndq9VJxfL9Wdmcz0pNEqkVgD/rfg0Rp9lc33JvrNXwjG6jlRKRatmCiswwA/h9SMPkzeYayVQ12SFFZfBVdQmUaRURzvbL4abH8uhXTfCDHAzB2MNIgjPx/8f+0Sm88Mi4rRqn1DRWEnjTW0fYkmgALLer9blgAJ07j0M/Pt2uT/Adj+ExsNthC+57c6/NnIW67uWJY+aMPMsJeNyFOJfEgQITsPQdSokIcuK+auOh69TF4Kz+F7VlJojNAjjHJudv4iLycmMS2SQ4X4QwH8SIWta7dskTm+EeSzOsBkyfM8hg8SASc+Mun73+OqE85/z+z5bSbIMKuYeBJV4ZFCHKRnDcs8CuB/z7nJqzoYwiQPRfr2Tmsps9JBWktRmjcQUnBrOk3WNVBX+PuJitJupatrmOiIlItR5SgLetu5tar2LOwozS1HR73OiM1IQEcF1Eat5DnNz65nlMVLF/Y4JJUQaJLHvf6hOtxatEKOi+7JAfWkM2FrVLav7JQKE/IFUN5KTRQv7X9rQC+bzdYSifhg65OxYgGdG3PsXVb/zJDCczAbx02VgN7vJR6VR9igJrT8n9QqEs3anMQsUSVKitu5v8sbXpJBplitraDP5WpX4MgvBk0OTg0Cni3kf8Ck0ATxNv+3GMzRrmMBETDcxlhu7IWPxbZS018TPsfNFJMN4F5XaAa8CnQ04rRii20RVnw+Ay020wfPA5qMY9GBgYTY1w6dlwicXlws gbHpo4x+ wV+HNdI21vBc/QX48FsZhWDmMPSC0XJXSwwDcQgBCj9dXdtjbYvgla/45uKwHsoidy/t0ajRNgD+LL1NaSAcPEOAKWTAp4TAJ2+9r 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: The weighted interleave policy distributes page allocations across multiple NUMA nodes based on their performance weight, thereby optimizing memory bandwidth utilization. The weight values for each node are configured through sysfs. Previously, the sysfs entries for configuring weighted interleave were only created during initialization. This approach had several limitations: - Sysfs entries were generated for all possible nodes at boot time, including nodes without memory, leading to unnecessary sysfs creation. - Some memory devices transition to an online state after initialization, but the existing implementation failed to create sysfs entries for these dynamically added nodes. As a result, memory hotplugged nodes were not properly recognized by the weighed interleave mechanism. To resolve these issues, this patch introduces two key improvements: 1) At initialization, only nodes that are online and have memory are recognized, preventing the creation of unnecessary sysfs entries. 2) Nodes that become available after initialization are dynamically detected and integrated through the memory hotplug mechanism. With this enhancement, the weighted interleave policy now properly supports memory hotplug, ensuring that newly added nodes are recognized and sysfs entries are created accordingly. Signed-off-by: Rakie Kim --- mm/mempolicy.c | 44 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index bbaadbeeb291..385607179ebd 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -113,6 +113,7 @@ #include #include #include +#include #include "internal.h" @@ -3489,9 +3490,35 @@ static int add_weight_node(int nid, struct kobject *wi_kobj) return 0; } +struct kobject *wi_kobj; + +static int wi_node_notifier(struct notifier_block *nb, + unsigned long action, void *data) +{ + int err; + struct memory_notify *arg = data; + int nid = arg->status_change_nid; + + if (nid < 0) + goto notifier_end; + + switch(action) { + case MEM_ONLINE: + err = add_weight_node(nid, wi_kobj); + if (err) { + pr_err("failed to add sysfs [node%d]\n", nid); + kobject_put(wi_kobj); + return NOTIFY_BAD; + } + break; + } + +notifier_end: + return NOTIFY_OK; +} + static int add_weighted_interleave_group(struct kobject *root_kobj) { - struct kobject *wi_kobj; int nid, err; wi_kobj = kzalloc(sizeof(struct kobject), GFP_KERNEL); @@ -3505,16 +3532,23 @@ static int add_weighted_interleave_group(struct kobject *root_kobj) return err; } - for_each_node_state(nid, N_POSSIBLE) { + for_each_online_node(nid) { + if (!node_state(nid, N_MEMORY)) + continue; + err = add_weight_node(nid, wi_kobj); if (err) { pr_err("failed to add sysfs [node%d]\n", nid); - break; + goto err_out; } } - if (err) - kobject_put(wi_kobj); + + hotplug_memory_notifier(wi_node_notifier, DEFAULT_CALLBACK_PRI); return 0; + +err_out: + kobject_put(wi_kobj); + return err; } static void mempolicy_kobj_release(struct kobject *kobj) From patchwork Fri Mar 7 06:35:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rakie Kim X-Patchwork-Id: 14006006 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 3B769C282DE for ; Fri, 7 Mar 2025 06:35:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5947A280008; Fri, 7 Mar 2025 01:35:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 51E78280003; Fri, 7 Mar 2025 01:35:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3708D280008; Fri, 7 Mar 2025 01:35:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 17701280003 for ; Fri, 7 Mar 2025 01:35:52 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 9FE74C0515 for ; Fri, 7 Mar 2025 06:35:52 +0000 (UTC) X-FDA: 83193794544.26.2F113EF Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by imf13.hostedemail.com (Postfix) with ESMTP id B07CA20003 for ; Fri, 7 Mar 2025 06:35:50 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf13.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=1741329351; 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=ypOBI4s7pyAyush3au0mUMAlfPNN4/SmsoKZaX9nx9Y=; b=tYP1maDv/SOPlAfB3Lb/Grq5ba2KRglK1xyFu5ybl0TOmu7k7M07GIlZ5FES0sc60VCroF LOkbqLCVIpR77C0IA1hZxwMfBsxtJx6NdS7v/KuyFZz9ZJUU43NHyEPqgWGX2zZfLE3Fhf SQD4owEjxBuDVC5BUuNdudQc247jK+c= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf13.hostedemail.com: domain of rakie.kim@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=rakie.kim@sk.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741329351; a=rsa-sha256; cv=none; b=M2+fISWxTyP+44sosU4YWnLKl4/TXl9qDgtlJFVYgXsiR7PrOafweVegLzH+MuovEhjCpR M1UZncrQIyoThHYYC+0v/TVKpx0c0U0CB8losvDDxHjzlLeKuyoYGcU4Xl/XWv166diqR9 lgpw3eMZhFBecLDogOS1uceqDvHnpXs= X-AuditID: a67dfc5b-3c9ff7000001d7ae-89-67ca93c54175 From: Rakie Kim To: gourry@gourry.net 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@sk.com Subject: [PATCH 2/4] mm/mempolicy: Enable sysfs support for memory hotplug in weighted interleave Date: Fri, 7 Mar 2025 15:35:31 +0900 Message-ID: <20250307063534.540-3-rakie.kim@sk.com> X-Mailer: git-send-email 2.48.1.windows.1 In-Reply-To: <20250307063534.540-1-rakie.kim@sk.com> References: <20250307063534.540-1-rakie.kim@sk.com> MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrDLMWRmVeSWpSXmKPExsXC9ZZnke7RyafSDb5c0LKYs34Nm8X0qRcY LX7ePc5ucXzrPHaL87NOsVhc3jWHzeLemv+sFqvXZDhweOycdZfdo7vtMrvH4j0vmTw2fZrE 7nFixm8Wj50PLT0+b5ILYI/isklJzcksSy3St0vgyuhuPsZa8Fix4k3bd7YGxl7pLkZODgkB E4lbZ76ywthrX94Esjk42ASUJI7tjQEJiwiISsw7Opuli5GLg1lgMZPEwsPrmUASwgKJEg1/ lrGD2CwCqhJ32o+AzeEVMJa48PMAM8RMTYmGS/fA6jmB5h9f9YgRZL4QUM3fXaUQ5YISJ2c+ YQGxmQXkJZq3zmYG2SUhcIJN4u7E50wQcyQlDq64wTKBkX8Wkp5ZSHoWMDKtYhTKzCvLTczM MdHLqMzLrNBLzs/dxAgM42W1f6J3MH66EHyIUYCDUYmH12PqyXQh1sSy4srcQ4wSHMxKIryC m4FCvCmJlVWpRfnxRaU5qcWHGKU5WJTEeY2+lacICaQnlqRmp6YWpBbBZJk4OKUaGKWSuH+r F546P1fljarLppQPzl6KHMFSy2SCH7OFVkdsPLLgoauH4Kre59LfLhdHtFhbx1R/4tPo/5e2 8n+YrafFkdbr6WcPartf5359cdfi0DRpjxPRc9zcgwS/qs+Z2HRDzHkFn1856ysTh9szenxn fYi6kHudc+cWpasP1yeduvS40cdyhRJLcUaioRZzUXEiAEvJmvVfAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGLMWRmVeSWpSXmKPExsXCNUNNS/fo5FPpBsf2qFjMWb+GzWL61AuM Fj/vHme3+PzsNbPF8a3z2C0Ozz3JanF+1ikWi8u75rBZ3Fvzn9Xi0LXnrBar12RY/N62gs2B x2PnrLvsHt1tl9k9Fu95yeSx6dMkdo8TM36zeOx8aOnx7baHx+IXH5g8Pm+SC+CM4rJJSc3J LEst0rdL4Mrobj7GWvBYseJN23e2BsZe6S5GTg4JAROJtS9vsnYxcnCwCShJHNsbAxIWERCV mHd0NksXIxcHs8BiJomFh9czgSSEBRIlGv4sYwexWQRUJe60H2EFsXkFjCUu/DzADDFTU6Lh 0j2wek6g+cdXPWIEmS8EVPN3VylEuaDEyZlPWEBsZgF5ieats5knMPLMQpKahSS1gJFpFaNI Zl5ZbmJmjqlecXZGZV5mhV5yfu4mRmDoLqv9M3EH45fL7ocYBTgYlXh4PaaeTBdiTSwrrsw9 xCjBwawkwiu4GSjEm5JYWZValB9fVJqTWnyIUZqDRUmc1ys8NUFIID2xJDU7NbUgtQgmy8TB KdXAWG8i7DNjevR7o2UPft+xnvLqhOZ+lcl/jmg7czEHyXxYcfP4v76XfquD35tpHDHyKs6P U3ynOKFEaV1S52VH5daT2e+eh9SG3i7m1Zgw/dq/rGsnOvsPq2t55m/kmOPBwhoVKB15s+9R 9/Jf3Jc4xdhtzH8en5GzfmLnh0k8vaKy9l/Ky7v+K7EUZyQaajEXFScCAECoqS1ZAgAA X-CFilter-Loop: Reflected X-Stat-Signature: arwg7x5ke6p38yqp6fenqmstyhuzi4bk X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: B07CA20003 X-Rspam-User: X-HE-Tag: 1741329350-301783 X-HE-Meta: U2FsdGVkX18nFAxNV8+lPIGrseMHzT3dhzdq7hgw+OK6VMWQZ3FmANJ/xliYv0DKiEkKueJIZOlvfzgmq45tolC9Zm7DTQjcUkllN4OCkNNxFGLgJUVO/+8jg0LmHMWDbJ/fp0VzTUCI8L3njCn+FHsy7CvPUUa6VVq+spbWWkjRCkxp+VbRGg69GednGkPobTR94lPTJmODvb6SeD5mUGp9JX01ph6HQvqh7lBbW4+t2fW2KRD7YVyOb0ytAmladDSVmTL8o2zHv+kzF0/4o5/VY7CINt0YiqeaQCd50MGw+yaFN4kLY6kAwKUZXj8VrpJuaGnUJKOzzcsSUTwOtsob6QITUbPrH0d2kGPXuUmeFy9tVUhyX0WEm4ccatrVy8UtaU19L9P7SlVle5xnzdX2otjXfwf0tLktofR4UONTibJEMDuC/AYzEcmTuNkdDxxlvhF6ZAQkHJnDBemsxVitcwp0qnpsZ3pqm7GOGfA5fy3Ar3nX7MH7im5wDAbaKAOPt0CjAuk9Kg1/52/4FT74WKYqS1pZHO2YZVWUquTmRSLMVJOUZiw43kLLaqpKWavGL+F+xjWQsuEdCclXsupDTqlsBFVvCqyunMF+GJ+W0/+ppU1DE1kepSSL1fKjnS6vv53N2O/vMz5hLAwbJWcQTCYEFb9lkV04eO56XgrFNlLiHnMZ8HWCYJ0UGa58+0AL3WTygzvwxONQPvWKOWR6LgP4SvZ12qr2SSi9HBAah7CkOkBI6H4XVH8JU7h5bR0CuLyLCYRMe0OjLD/8rlfHuCXBRpTqta6QTbXWF1tNoWaWEQIONMY+1k+MdQGMCO4gPBZ/+Ifp4Uv4lbI7LJ80Ku0vhgUtdA6awbKp4jwHxUF31HLEziIU9df1nDUPYR+BQWjMFnhbLpbVEzVKT6Vee826F4psNQSH3d3uq3F+vVORBIRZl491QlpRvlKE5eNtNAmQa5LOgNRq7hP 3hUL4IA3 Fc9jMD22HGJpmnwPUyMIVqM9afcIDYzjNpUSPMrlpHyxFkFFogR2jXE3zHZNfX3N9soemwWN6Wx6FKAtsS8AVYo1KfFRTwTwiVCD28Et0RyPB4f4oaQX28JT0TKoG0tJ/gxJC7zuuiwmC37w= 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: Previously, sysfs entries for weighted interleave were only created during initialization, preventing dynamically added memory nodes from being recognized. This patch enables sysfs registration for nodes added via memory hotplug, allowing weighted interleave settings to be updated as the system memory configuration changes. Signed-off-by: Rakie Kim --- mm/mempolicy.c | 51 +++++++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 385607179ebd..fc10a9a4be86 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -3389,6 +3389,13 @@ struct iw_node_attr { int nid; }; +struct iw_node_group { + struct kobject *wi_kobj; + struct iw_node_attr **nattrs; +}; + +static struct iw_node_group *ngrp; + static ssize_t node_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { @@ -3431,8 +3438,6 @@ static ssize_t node_store(struct kobject *kobj, struct kobj_attribute *attr, return count; } -static struct iw_node_attr **node_attrs; - static void sysfs_wi_node_release(struct iw_node_attr *node_attr, struct kobject *parent) { @@ -3448,7 +3453,7 @@ static void sysfs_wi_release(struct kobject *wi_kobj) int i; for (i = 0; i < nr_node_ids; i++) - sysfs_wi_node_release(node_attrs[i], wi_kobj); + sysfs_wi_node_release(ngrp->nattrs[i], wi_kobj); kobject_put(wi_kobj); } @@ -3486,12 +3491,10 @@ static int add_weight_node(int nid, struct kobject *wi_kobj) return -ENOMEM; } - node_attrs[nid] = node_attr; + ngrp->nattrs[nid] = node_attr; return 0; } -struct kobject *wi_kobj; - static int wi_node_notifier(struct notifier_block *nb, unsigned long action, void *data) { @@ -3504,10 +3507,10 @@ static int wi_node_notifier(struct notifier_block *nb, switch(action) { case MEM_ONLINE: - err = add_weight_node(nid, wi_kobj); + err = add_weight_node(nid, ngrp->wi_kobj); if (err) { pr_err("failed to add sysfs [node%d]\n", nid); - kobject_put(wi_kobj); + kobject_put(ngrp->wi_kobj); return NOTIFY_BAD; } break; @@ -3521,14 +3524,14 @@ static int add_weighted_interleave_group(struct kobject *root_kobj) { int nid, err; - wi_kobj = kzalloc(sizeof(struct kobject), GFP_KERNEL); - if (!wi_kobj) + ngrp->wi_kobj = kzalloc(sizeof(struct kobject), GFP_KERNEL); + if (!ngrp->wi_kobj) return -ENOMEM; - err = kobject_init_and_add(wi_kobj, &wi_ktype, root_kobj, + err = kobject_init_and_add(ngrp->wi_kobj, &wi_ktype, root_kobj, "weighted_interleave"); if (err) { - kfree(wi_kobj); + kfree(ngrp->wi_kobj); return err; } @@ -3536,7 +3539,7 @@ static int add_weighted_interleave_group(struct kobject *root_kobj) if (!node_state(nid, N_MEMORY)) continue; - err = add_weight_node(nid, wi_kobj); + err = add_weight_node(nid, ngrp->wi_kobj); if (err) { pr_err("failed to add sysfs [node%d]\n", nid); goto err_out; @@ -3547,7 +3550,7 @@ static int add_weighted_interleave_group(struct kobject *root_kobj) return 0; err_out: - kobject_put(wi_kobj); + kobject_put(ngrp->wi_kobj); return err; } @@ -3562,7 +3565,9 @@ static void mempolicy_kobj_release(struct kobject *kobj) mutex_unlock(&iw_table_lock); synchronize_rcu(); kfree(old); - kfree(node_attrs); + + kfree(ngrp->nattrs); + kfree(ngrp); kfree(kobj); } @@ -3581,13 +3586,19 @@ static int __init mempolicy_sysfs_init(void) goto err_out; } - node_attrs = kcalloc(nr_node_ids, sizeof(struct iw_node_attr *), - GFP_KERNEL); - if (!node_attrs) { + ngrp = kzalloc(sizeof(*ngrp), GFP_KERNEL); + if (!ngrp) { err = -ENOMEM; goto mempol_out; } + ngrp->nattrs = kcalloc(nr_node_ids, sizeof(struct iw_node_attr *), + GFP_KERNEL); + if (!ngrp->nattrs) { + err = -ENOMEM; + goto ngrp_out; + } + err = kobject_init_and_add(mempolicy_kobj, &mempolicy_ktype, mm_kobj, "mempolicy"); if (err) @@ -3602,7 +3613,9 @@ static int __init mempolicy_sysfs_init(void) return err; node_out: - kfree(node_attrs); + kfree(ngrp->nattrs); +ngrp_out: + kfree(ngrp); mempol_out: kfree(mempolicy_kobj); err_out: From patchwork Fri Mar 7 06:35:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rakie Kim X-Patchwork-Id: 14006007 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 38A63C282D0 for ; Fri, 7 Mar 2025 06:35:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1B469280009; Fri, 7 Mar 2025 01:35:54 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 166CF280003; Fri, 7 Mar 2025 01:35:54 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 004AF280009; Fri, 7 Mar 2025 01:35:53 -0500 (EST) 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 CCF45280003 for ; Fri, 7 Mar 2025 01:35:53 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id E26A9120506 for ; Fri, 7 Mar 2025 06:35:54 +0000 (UTC) X-FDA: 83193794628.14.4B66628 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by imf13.hostedemail.com (Postfix) with ESMTP id 045F120006 for ; Fri, 7 Mar 2025 06:35:52 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf13.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=1741329353; 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=ZFuBLCt8RoIVsDhdJbkXcp/xNnk4Gs41zitEidELpLs=; b=Q2ptbg5liKbb3fT+znZVKhTrUQT/RoyJKBghFLnxF7efCwcOXxFssovBHV1WwviFqKt5iD Rc8OeF9cv6dcXBQJn9Hl+jVyhRyGeZOQLFEDemh2hUbS3ytVcoTlLcaDVodKoVhmytuv1f 73I/s8RgPuMwkX2+PcDkMhNGjgO5Cmc= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf13.hostedemail.com: domain of rakie.kim@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=rakie.kim@sk.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741329353; a=rsa-sha256; cv=none; b=OMN+cLyx3i5QKGk6BknDmALwYFTHOffGDRuBoO4DEKtpJbufIDLqVMUf5EJu2HiVXJEmWz n+cvRgVR9f6PygdKi+mERhbOSrw9R4fUwnAH44n2aYmBvXD4baO2HqOhEwtWs1DULxvUKF TvgvbjszW7v08ct9O88fmxJOvcuM8wU= X-AuditID: a67dfc5b-3c9ff7000001d7ae-95-67ca93c79c08 From: Rakie Kim To: gourry@gourry.net 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@sk.com Subject: [PATCH 3/4] mm/mempolicy: Fix duplicate node addition in sysfs for weighted interleave Date: Fri, 7 Mar 2025 15:35:32 +0900 Message-ID: <20250307063534.540-4-rakie.kim@sk.com> X-Mailer: git-send-email 2.48.1.windows.1 In-Reply-To: <20250307063534.540-1-rakie.kim@sk.com> References: <20250307063534.540-1-rakie.kim@sk.com> MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrDLMWRmVeSWpSXmKPExsXC9ZZnke7xyafSDZ7+NLCYs34Nm8X0qRcY LX7ePc5ucXzrPHaL87NOsVhc3jWHzeLemv+sFqvXZDhweOycdZfdo7vtMrvH4j0vmTw2fZrE 7nFixm8Wj50PLT0+b5ILYI/isklJzcksSy3St0vgylg/9QRTwQ2ZigVvjzI1MN4W72Lk5JAQ MJGYdXwhK4zd/O0mYxcjBwebgJLEsb0xIGERAVGJeUdns3QxcnEwCyxmklh4eD0TSEJYIF7i +ve1zCA2i4CqxP2rDewgNq+AscSEBZNYIGZqSjRcugdWzwk0//iqR2DzhYBq/u4qhSgXlDg5 8wlYObOAvETz1tnMILskBE6wSbS//cMMMUdS4uCKGywTGPlnIemZhaRnASPTKkahzLyy3MTM HBO9jMq8zAq95PzcTYzAMF5W+yd6B+OnC8GHGAU4GJV4eD2mnkwXYk0sK67MPcQowcGsJMIr uBkoxJuSWFmVWpQfX1Sak1p8iFGag0VJnNfoW3mKkEB6YklqdmpqQWoRTJaJg1OqgXG5Yr3O vOWy6ZuWlM+LtFVn6dJZLVh6fOmRXXG75ST8k/gEmOZUF52+YV35LTOk9bfs5hNlbNrFhgFr 51dqeq+YEVTyL5rv+lv5yVmtpo+bNzs/yj8j6ROvGeXqWVOzQOmt5nP+/7pF02NF5i9yWpdu eLPRcN48Jot3ESlp53vv+u14NUd6rRJLcUaioRZzUXEiAEYemsBfAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGLMWRmVeSWpSXmKPExsXCNUNNS/f45FPpBqfWaFjMWb+GzWL61AuM Fj/vHme3+PzsNbPF8a3z2C0Ozz3JanF+1ikWi8u75rBZ3Fvzn9Xi0LXnrBar12RY/N62gs2B x2PnrLvsHt1tl9k9Fu95yeSx6dMkdo8TM36zeOx8aOnx7baHx+IXH5g8Pm+SC+CM4rJJSc3J LEst0rdL4MpYP/UEU8ENmYoFb48yNTDeFu9i5OSQEDCRaP52k7GLkYODTUBJ4tjeGJCwiICo xLyjs1m6GLk4mAUWM0ksPLyeCSQhLBAvcf37WmYQm0VAVeL+1QZ2EJtXwFhiwoJJLBAzNSUa Lt0Dq+cEmn981SOw+UJANX93lUKUC0qcnPkErJxZQF6ieets5gmMPLOQpGYhSS1gZFrFKJKZ V5abmJljqlecnVGZl1mhl5yfu4kRGLrLav9M3MH45bL7IUYBDkYlHl6PqSfThVgTy4orcw8x SnAwK4nwCm4GCvGmJFZWpRblxxeV5qQWH2KU5mBREuf1Ck9NEBJITyxJzU5NLUgtgskycXBK NTDatp25+lR98sMWZ+XFsSp8r38xvV7x1vX+lNjs+cXnzTxqy45fKp+mvfCeR26u44dFl7LC PrnP/3Eou8c17M9iNfYjB9vbltdpp0XE5+5z6VW/qZfaIX1410OWmfmS3c2neRl2+ou+ErAQ WXb7eGaBo4dV0ts58h57PdKmtUsIHGM7pr9la6kSS3FGoqEWc1FxIgAn+We5WQIAAA== X-CFilter-Loop: Reflected X-Stat-Signature: pfy9fkeiqwubdz5wahd6tx6c69qyrogu X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 045F120006 X-Rspam-User: X-HE-Tag: 1741329352-292628 X-HE-Meta: U2FsdGVkX18HhjowVweaFu+l8r16oojnUXkUyClpG4v0zf2w3dHhhuK7RqE+ah430o3UIQsviZIBygR+08LzuqaGTeOdnOd69APZ2PK0IK9T37g75Rbo+rFfF+jIMbMw6lldnko/gUztexLzLZKYmfhx/AK0QEG3noaKws7tsNHVO4+bg6yLx5u2muUNVfImFUbA9hUPqIgrx3FnyChhnd8lu14xmyVtUah+GD/999uqZtroG6WXCdHM6SnEyFR9K7bVVZETFhHtmHSdQ48jY7VKjpzpTWjtUO+0zIPm7T4Su5CBNsRL3ejgDr7pqH0JFESTOdkj6PE0psyyYDv9u/RxA+M8uP3tvTamJosy1d/xQpLSAvUvSIZTqrRKOmnYP9P6O0rxTzkyLhEHB0ds6XJLjPmar1NohRVtYx5qhFZ00KPGHzPda09A/Qq5SY2tONLTnUvj9orEQf1RSMBjiGH++j1ssy0yj/gYEZRAJcjvwwZl3m8Aov+vfKUcGwiPZGXyV71rRiwjcF0f1mWSdeYUAdIPVm8V3xGy6bDG3/3bwK6OunQyTxD/KO3kMLWvt1Sq6raZf7bgN9Fg3sC2XLbSui0ni58280ONp5Ev9n6qJbuw/HOzrLtXr7inoAtHts+bYz05J7o4PpVJY9dB+qaiiJv2TMsVlCR+6n9/MkXcLy60pLVcH9Fm/ha2n5MDMSEl2c54pejFMHB042iAZGYKRmNHaU3sYxyC3r768RN1EnRH6nXBJhwANwb7j6PH0E0VfEtC8wa/RGr0fif2aHNwk5lUoqlfljgyonkJIinFrY1rpYCT2NJhks96iGFidvbS04bg4PKuqROMgIYBgYgURrIjOTkMMd5VcpVruMar/w0FzGBq0XhvbYBJnKYuiAWS7nhu3gqONPNdNsU+g1DjmzPT+pDevyTl+LdH2PNgbM8FmfxN3zINx5+XXwgQHIpjjfHJ9rnSDja6+yD xNKI6U5M bvW2sO5RJHgtX8irCx2UeuAt3ZQmZCuzRdcjHsfqywRRMzJse+YIGCR9eC7CTvjcUjTn2VJCDjfvmk948wsmHNSWAm+TJeXzB3oHZ 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: Sysfs attributes for interleave control were registered both at initialization and when new nodes were detected via hotplug, leading to potential duplicates. This patch ensures that each node is registered only once, preventing conflicts and redundant sysfs entries. Signed-off-by: Rakie Kim --- mm/mempolicy.c | 65 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 45 insertions(+), 20 deletions(-) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index fc10a9a4be86..2d19434c61ed 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -3391,6 +3391,7 @@ struct iw_node_attr { struct iw_node_group { struct kobject *wi_kobj; + struct mutex kobj_lock; struct iw_node_attr **nattrs; }; @@ -3441,11 +3442,15 @@ static ssize_t node_store(struct kobject *kobj, struct kobj_attribute *attr, static void sysfs_wi_node_release(struct iw_node_attr *node_attr, struct kobject *parent) { - if (!node_attr) + mutex_lock(&ngrp->kobj_lock); + if (!node_attr) { + mutex_unlock(&ngrp->kobj_lock); return; + } sysfs_remove_file(parent, &node_attr->kobj_attr.attr); kfree(node_attr->kobj_attr.attr.name); kfree(node_attr); + mutex_unlock(&ngrp->kobj_lock); } static void sysfs_wi_release(struct kobject *wi_kobj) @@ -3464,35 +3469,54 @@ static const struct kobj_type wi_ktype = { static int add_weight_node(int nid, struct kobject *wi_kobj) { - struct iw_node_attr *node_attr; + int ret = 0; char *name; - node_attr = kzalloc(sizeof(*node_attr), GFP_KERNEL); - if (!node_attr) - return -ENOMEM; + if (nid < 0 || nid >= nr_node_ids) { + pr_err("Invalid node id: %d\n", nid); + ret = -EINVAL; + goto out; + } + + mutex_lock(&ngrp->kobj_lock); + if (!ngrp->nattrs[nid]) { + ngrp->nattrs[nid] = kzalloc(sizeof(struct iw_node_attr), GFP_KERNEL); + } else { + mutex_unlock(&ngrp->kobj_lock); + pr_info("Node [%d] is already existed\n", nid); + goto out; + } + mutex_unlock(&ngrp->kobj_lock); + + if (!ngrp->nattrs[nid]) { + ret = -ENOMEM; + goto out; + } name = kasprintf(GFP_KERNEL, "node%d", nid); if (!name) { - kfree(node_attr); - return -ENOMEM; + kfree(ngrp->nattrs[nid]); + ret = -ENOMEM; + goto out; } - sysfs_attr_init(&node_attr->kobj_attr.attr); - node_attr->kobj_attr.attr.name = name; - node_attr->kobj_attr.attr.mode = 0644; - node_attr->kobj_attr.show = node_show; - node_attr->kobj_attr.store = node_store; - node_attr->nid = nid; + sysfs_attr_init(&ngrp->nattrs[nid]->kobj_attr.attr); + ngrp->nattrs[nid]->kobj_attr.attr.name = name; + ngrp->nattrs[nid]->kobj_attr.attr.mode = 0644; + ngrp->nattrs[nid]->kobj_attr.show = node_show; + ngrp->nattrs[nid]->kobj_attr.store = node_store; + ngrp->nattrs[nid]->nid = nid; - if (sysfs_create_file(wi_kobj, &node_attr->kobj_attr.attr)) { - kfree(node_attr->kobj_attr.attr.name); - kfree(node_attr); - pr_err("failed to add attribute to weighted_interleave\n"); - return -ENOMEM; + ret = sysfs_create_file(wi_kobj, &ngrp->nattrs[nid]->kobj_attr.attr); + if (ret) { + kfree(ngrp->nattrs[nid]->kobj_attr.attr.name); + kfree(ngrp->nattrs[nid]); + pr_err("failed to add attribute to weighted_interleave: %d\n", ret); + goto out; } - ngrp->nattrs[nid] = node_attr; - return 0; +out: + return ret; } static int wi_node_notifier(struct notifier_block *nb, @@ -3591,6 +3615,7 @@ static int __init mempolicy_sysfs_init(void) err = -ENOMEM; goto mempol_out; } + mutex_init(&ngrp->kobj_lock); ngrp->nattrs = kcalloc(nr_node_ids, sizeof(struct iw_node_attr *), GFP_KERNEL); From patchwork Fri Mar 7 06:35:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rakie Kim X-Patchwork-Id: 14006008 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 E43A3C28B26 for ; Fri, 7 Mar 2025 06:35:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8F2AA28000A; Fri, 7 Mar 2025 01:35:56 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8A3A4280003; Fri, 7 Mar 2025 01:35:56 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6F56028000A; Fri, 7 Mar 2025 01:35:56 -0500 (EST) 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 4CE1B280003 for ; Fri, 7 Mar 2025 01:35:56 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 48BA54BA03 for ; Fri, 7 Mar 2025 06:35:57 +0000 (UTC) X-FDA: 83193794754.18.286C919 Received: from invmail4.hynix.com (exvmail4.hynix.com [166.125.252.92]) by imf13.hostedemail.com (Postfix) with ESMTP id 4D4D220006 for ; Fri, 7 Mar 2025 06:35:55 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf13.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=1741329355; 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=e6k3ZE8lnv5o0rDMbfFnKaElWBsrxlbKeZyzrNFx2yc=; b=SoaMuIgUClPHCLFVde0Wv3vk6VmMwfypJ4TosX7dKbLHSR8uH5KlLSPLVXm7dqCK2ccEw3 94fBnPjlHfBvCAaV1hkw66Mb4NnW9jWNsLcH0ms6VI2pnKpTW9DT4K2rwrD0qKGyN8XxYF JHi7oQShRG1NXtAb3uc1IYj4/3U6WU8= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf13.hostedemail.com: domain of rakie.kim@sk.com designates 166.125.252.92 as permitted sender) smtp.mailfrom=rakie.kim@sk.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741329355; a=rsa-sha256; cv=none; b=Fiah6QLlFMr6b67CTsqITkhSEt746RZlR3Oi1yhuaJ5bd6cxdy5UIpO45Ua+lb4v+gk3Zb 9RbXQKXjRd3m5GigwaWiZXaI7EZmLtJYBS2gUYv6gHh2BQpYTr33kDsY99LlaSzwW4ZLYg LDaXjP2wcfqHRdaOCvVQt2w9NnOo1ag= X-AuditID: a67dfc5b-3c9ff7000001d7ae-a1-67ca93c9d7a2 From: Rakie Kim To: gourry@gourry.net 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@sk.com Subject: [PATCH 4/4] mm/mempolicy: Fix memory leaks in mempolicy_sysfs_init() Date: Fri, 7 Mar 2025 15:35:33 +0900 Message-ID: <20250307063534.540-5-rakie.kim@sk.com> X-Mailer: git-send-email 2.48.1.windows.1 In-Reply-To: <20250307063534.540-1-rakie.kim@sk.com> References: <20250307063534.540-1-rakie.kim@sk.com> MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrFLMWRmVeSWpSXmKPExsXC9ZZnke7JyafSDWbcNrCYs34Nm8X0qRcY LX7ePc5ucXzrPHaL87NOsVhc3jWHzeLemv+sFqvXZDhweOycdZfdo7vtMrvH4j0vmTw2fZrE 7nFixm8Wj50PLT0+b5ILYI/isklJzcksSy3St0vgyti+r67gPn9F85bTLA2MB3m6GDk5JARM JLasWMMGY99eshnI5uBgE1CSOLY3BiQsIiAqMe/obJYuRi4OZoHFTBILD69nAqkRFvCV6G+0 AKlhEVCV6Gi5CzaGV8BY4vy698wQIzUlGi7dYwKxOYHGH1/1iBGkVQio5u+uUohyQYmTM5+w gNjMAvISzVtnM4OskhA4wSbx9M4vJog5khIHV9xgmcDIPwtJzywkPQsYmVYxCmXmleUmZuaY 6GVU5mVW6CXn525iBIbwsto/0TsYP10IPsQowMGoxMPrMfVkuhBrYllxZe4hRgkOZiURXsHN QCHelMTKqtSi/Pii0pzU4kOM0hwsSuK8Rt/KU4QE0hNLUrNTUwtSi2CyTBycUg2MbiJv7jyv rz3UYZVQd15HbfWNz9c9uqQevA4yN7zDG/l5giPfGt5i+9YjlSuPte9mX8O8zJDBRfe7jVty s8C6vxfnTjS4fu/31yZVed7p3vMvxLxrdRd9p/X85O0raza4l99u2T1fsUjl260dE59eXHT+ T/2hI7+ZzqZI/tfJ/vwmU2nlx0CmfUosxRmJhlrMRcWJABWCoTRdAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrCLMWRmVeSWpSXmKPExsXCNUNNS/fk5FPpBk0t2hZz1q9hs5g+9QKj xc+7x9ktPj97zWxxfOs8dovDc0+yWpyfdYrF4vKuOWwW99b8Z7U4dO05q8XqNRkWv7etYHPg 8dg56y67R3fbZXaPxXteMnls+jSJ3ePEjN8sHjsfWnp8u+3hsfjFByaPz5vkAjijuGxSUnMy y1KL9O0SuDK276sruM9f0bzlNEsD40GeLkZODgkBE4nbSzazdTFycLAJKEkc2xsDEhYREJWY d3Q2SxcjFwezwGImiYWH1zOB1AgL+Er0N1qA1LAIqEp0tNxlA7F5BYwlzq97zwwxUlOi4dI9 JhCbE2j88VWPGEFahYBq/u4qhSgXlDg58wkLiM0sIC/RvHU28wRGnllIUrOQpBYwMq1iFMnM K8tNzMwx1SvOzqjMy6zQS87P3cQIDNtltX8m7mD8ctn9EKMAB6MSD6/H1JPpQqyJZcWVuYcY JTiYlUR4BTcDhXhTEiurUovy44tKc1KLDzFKc7AoifN6hacmCAmkJ5akZqemFqQWwWSZODil GhgTZP79+PBdWMZISPPtocgc5fl3vTK4RL/Upc4TjqqZOvFvZl7nbYGk3Wd3mfv/uHR6WtZB 7iO3ghiyV22dzetsYV9V/+hjydKah+nMc6N/ms3ifDG7/36pnudhuYOaRS+iVhwysN23YO7u kEOxjFxlKUsb6qIvubQf9Wlobl0ap9yxbhrz9blKLMUZiYZazEXFiQB+7MM3VwIAAA== X-CFilter-Loop: Reflected X-Stat-Signature: mijpf5yk3wpo7m8zzqyigfuse9ke9rcb X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 4D4D220006 X-Rspam-User: X-HE-Tag: 1741329355-977882 X-HE-Meta: U2FsdGVkX1++hqcZCVyGuw2z9voNOnRP5YuFDLSY3eGam2NWY25n+2GdAq/jcIEP9ddzbaXmMKEMIrixUYgX7PJW64J/7RNl7TTxxVwmtpSHmPWpgr4Njd36qz+2q1s7etgtKix8/qM882vIxm0NVeqdb4ziPBUhRlfi/nJ28gfqGORchkU/dCcEHwU8NkHwfpQCPx+6crlmU2leVmqgyLJMxK9lvSB9HBT7cN+XvyLODisFhChkBBzuLWL3ZjMvYHviZTYCADC5639W3L4OZbIPwQW8pADIe1RasCr4Be4+Q02lPEdDrbvY7rKiP/YERoADoKN5YVO5PbOUVyShgFH1wUdi7gEFqkeqpIet361JHx2IDSF67put/Imfe5j3fNysHTcJfuNlh8R+tpIHVkhVipj41hx1vfzjP9gxvGO1CZM2nDVG4epE399jA8jlGLMlDGO9Ra9diU1266EA+pyZ5u1RgGRzwXgFMp5z5eoJf/BFPXAQaCb4XWkjdsqRvPGdayN2BKVzb8hf4WfRu/E5wn1noANBtuWlOq1yQ3IEywnXk9bKg2rzhUU4PI+Ecq1wu0sEwu2qkfAj7H4JBIrxeG+wi8xxlYzmrb1DMVuPU67mdp6Ze6yrbN/nVMcMjbS9wlT8yk1JBMgBYzxC1TUbMBeDtwrXIwvz4kuL8dix1Gf1WZUKhn1sK6cgAj9AyPaVeFd1jBcVtLHuXZ98+gcXeGQxlO5tAnEMV97cPkKtHcclpfADVYdBDFUz1Fme4ETu//c8gsff1+0CVhVxhYzO5AzPsNnUWJpkgLzYMrAJEJk6EtxxiGIpSlIusjuzeEbJpg/VP4XvNevA3grgWpmWxtF6cRjGPu2gYFfdSl7TFn74ecl1f1wcZpCoLM853IK6ME6Siq+IeplyS7pdAbMH4Gax0aaYHq/XjLhuEX9I3z9dn3s4tRXan/AR8PNL0FXPk2jTvz3+B9HYo0K oyAH6h4Z 3ZfYY82ETrPuyVYQb5Da20Ks61KWpoiH5GvtLanQvXKXsUqj2EMs7/WI9l3cisJbDdHF+5cAP0YKcRiOJCHR+9O/Ft2AlMb2JA40csqsAC5BnYNTDCWOcbnpLyI25DnHWr8dlwOaUBuQA6AmAbAFbd+ut5w== 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: 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 --- 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; }