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 DBA35D16243 for ; Mon, 14 Oct 2024 11:30:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 723F06B0082; Mon, 14 Oct 2024 07:30:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6AD426B0083; Mon, 14 Oct 2024 07:30:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4FFEB6B0085; Mon, 14 Oct 2024 07:30:08 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 32DDE6B0082 for ; Mon, 14 Oct 2024 07:30:08 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id B150BABCB5 for ; Mon, 14 Oct 2024 11:29:52 +0000 (UTC) X-FDA: 82671988686.26.D7A5DCB Received: from fout-a2-smtp.messagingengine.com (fout-a2-smtp.messagingengine.com [103.168.172.145]) by imf19.hostedemail.com (Postfix) with ESMTP id 45EED1A0012 for ; Mon, 14 Oct 2024 11:29:58 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=shutemov.name header.s=fm1 header.b="J s1J+5F"; dkim=pass header.d=messagingengine.com header.s=fm2 header.b=E5nfif1v; dmarc=none; spf=pass (imf19.hostedemail.com: domain of kirill@shutemov.name designates 103.168.172.145 as permitted sender) smtp.mailfrom=kirill@shutemov.name ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728905290; a=rsa-sha256; cv=none; b=uRfNNW7cPBP3CFOeV+qVjkL2/CuRHICF0yUTh0plzcg/gGnuoXsiiO0PWWoj20LbNhph07 edI3YJsrq/YLNqBVCug64OLaipXGlJum0KBRx/KmMP1j1ookd8ZyY1DkThLcDIaP+PE3j1 nP7QTt+W+eAFd9BvJfIHOIQiwxaXu+4= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=shutemov.name header.s=fm1 header.b="J s1J+5F"; dkim=pass header.d=messagingengine.com header.s=fm2 header.b=E5nfif1v; dmarc=none; spf=pass (imf19.hostedemail.com: domain of kirill@shutemov.name designates 103.168.172.145 as permitted sender) smtp.mailfrom=kirill@shutemov.name ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728905290; 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-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Nkaa57U1k6kPFROOwcTpg/meaVbmUL23D4tfu0N0is8=; b=XQes3mqjaor8wK/KlisdxOoOsSguWwAJiRuOzWKWQ4fwwJvaVpHTW2+1RHYerRSFykLnOn p8p/onpzTz+imwn4sfghDEXY4yyKBf2jxQYX0SRQIOa2fs+e7uewX4TopUjoOHBBeCXjUD xhKZFJ/0rac+9fBKpF+yuWOC2VqrYqs= Received: from phl-compute-11.internal (phl-compute-11.phl.internal [10.202.2.51]) by mailfout.phl.internal (Postfix) with ESMTP id 1EFCB13804A4; Mon, 14 Oct 2024 07:30:05 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-11.internal (MEProxy); Mon, 14 Oct 2024 07:30:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shutemov.name; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm1; t=1728905405; x= 1728991805; bh=Nkaa57U1k6kPFROOwcTpg/meaVbmUL23D4tfu0N0is8=; b=J s1J+5FRFHAllmksl2lZxwmDKUmxnAXKpLs2vHpPM1IsawKDs8ZqtBm5Dn9lwclWx TPP1sSFhw6zj2sgHekFtC1jS0fYte6SB17BL0lK1ZBryfQdpx6tuwBR/4aq2ps/2 XgXRlJYxT47+JP7SOkwQjcBuDSLeAix7VdfPHZD0PJFNxu0ODz4D5i8q6rh55uCr fBnjA3eY1FGt7guQRmsUsJepqvcxJyJR1s6cKy9NZRnOGEAPfFbMdou1L17NuDop BVzrJrtNVtuk69W1qnDv5fFycgcLP7F4jSAVNfcHfJhfFM9s5w9bbbIiaMLl98mX r1Lv9Gp2qbnpSYAPsBuOw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1728905405; x=1728991805; bh=Nkaa57U1k6kPFROOwcTpg/meaVbm UL23D4tfu0N0is8=; b=E5nfif1vHDNBBBlrQjZaXOA3zaMl4H36FzydAX2LKcE+ wVe+CS+bMFT6tS5zDL3bsh5xrbY9Sk7zItFEFYhHeaioHClsCJ6cdzKGHMDAo8k6 YorrCBdU1IgIgDE4SPe+tgCLzyVapnyvDEuRG7p/X9a8Hdw7UdJ8Gk67RrJePgcy 6ioxRIMBvTKXZFKlVe7sDlM8Ke7vN8C1FWhvOdV835A+Ru4zSi9xfXID0e7zUrSy cK8N51aU+rBds5XY/VsqSJeuxGaDDPDFYouc6qL0U8ChBt7WEuZT+DyUyTlFM6tI MXm6IaMbRAzOaNe+PjPlMCIsiGABlWMHzKCEMIMQEA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdeghedgfeelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesthdtsfdttddtvden ucfhrhhomhepfdfmihhrihhllhcutedrucfuhhhuthgvmhhovhdfuceokhhirhhilhhlse hshhhuthgvmhhovhdrnhgrmhgvqeenucggtffrrghtthgvrhhnpeffvdevueetudfhhfff veelhfetfeevveekleevjeduudevvdduvdelteduvefhkeenucevlhhushhtvghrufhiii gvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehkihhrihhllhesshhhuhhtvghmohhv rdhnrghmvgdpnhgspghrtghpthhtohepuddtpdhmohguvgepshhmthhpohhuthdprhgtph htthhopegthhgvnhhrihguohhngheshhhurgifvghitghlohhuugdrtghomhdprhgtphht thhopegrkhhpmheslhhinhhugidqfhhouhhnuggrthhiohhnrdhorhhgpdhrtghpthhtoh epuggrvhhiugesfhhrohhmohhrsghithdrtghomhdprhgtphhtthhopeiihhgvnhhgqhhi rdgrrhgthhessgihthgvuggrnhgtvgdrtghomhdprhgtphhtthhopehrohhmrghnrdhguh hshhgthhhinheslhhinhhugidruggvvhdprhgtphhtthhopehmuhgthhhunhdrshhonhhg sehlihhnuhigrdguvghvpdhrtghpthhtoheplhhinhhugidqmhhmsehkvhgrtghkrdhorh hgpdhrtghpthhtoheplhhinhhugidqkhgvrhhnvghlsehvghgvrhdrkhgvrhhnvghlrdho rhhgpdhrtghpthhtoheptghhvghnrhhiughonhhgsehhuhgrfigvihdrtghomh X-ME-Proxy: Feedback-ID: ie3994620:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 14 Oct 2024 07:29:59 -0400 (EDT) Date: Mon, 14 Oct 2024 14:29:55 +0300 From: "Kirill A. Shutemov" To: Chen Ridong Cc: akpm@linux-foundation.org, david@fromorbit.com, zhengqi.arch@bytedance.com, roman.gushchin@linux.dev, muchun.song@linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, chenridong@huawei.com, wangweiyang2@huawei.com Subject: Re: [PATCH v2] mm: shrinker: avoid memleak in alloc_shrinker_info Message-ID: References: <20241014032336.482088-1-chenridong@huaweicloud.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241014032336.482088-1-chenridong@huaweicloud.com> X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 45EED1A0012 X-Stat-Signature: d1j8exg8s7trckau3bca4ty4ara8ixrf X-Rspam-User: X-HE-Tag: 1728905398-745681 X-HE-Meta: U2FsdGVkX18KZdAlZ55g9tCF6tJaFe+mb0xauWdXOzcqD6oSHpValwZJOsY5hkt7YRcGA+fTLnktwtt3l5IYNPkQBpRlkB0HFgHl/SXpNmkOD9S9cQnRTdNYl/FS0Ehov+uom6VyT47SQ75VAr5iN2ydw3XKLscp7uOmsFJNgjwRek/yiFYOytUITusvtKNkZmdVVswximlP7/aCvcxEbuNi8NuDwhf8HpSNRA0ugotwjU9LFp+KIyfFYzyVyvQ0wrQcYEiaZ3HoL14q/I45w0b3n9CLo6699TNYmlxiV1g6dqAJfFeWzjMPqTEGJeliWAi9OIsysxdp+TiOIGYHrsmubFCZzEpzfU4rTz5BuwdRDi35KtO8JHxGM6VQmwaGhSxW8rZSK0EvDA9FkEKzEmiIz6ab49kU2wCmLpg+oHcbdThwxhqI9fpJCMvcW+Mps3299+bQC7tHu9qgRwz9K99u20oUwnQLuDbVPY6VjVkxKv88JeykqmOVd3WanfIfMRh9CSjE3gfVZKG+K4HEoNGuO464eTYjdgNHpbElM0saLCnHcW6OeI1dZImniqk6W/XrisHUlxFfz+0GzD9KElRhdyUS59QUaPRLWfftXxGyncCBbfs8QfFyvKl865mBtIZltb01tRQhZU+Hpvx1oZfkYM4KpkJEVmxwEIOVAqZ+58/qqZ3PecTyUci5VTFtsU87J43g8vdmDXm9VoIH+aZT+0VzxbqJVTlw7prv8guazF2beyjBxAfZIVdPoLA/T/kwLYXlkZ3ed54UQIBe2eTQSiNBJT2uxSxg1CIT4XEA2YZGlMXGIhaPpILJmSAdou+MsemM8LViwGkLUI/1iT43vvqr6l6uCW3+B3wLv377gL6ir31HssZOMDpuTMOJxg5r30lG52oZQYf0XXH/jI6xlgLu7IJXwlJ0itSjRwdQAaFmka7IN8dgJk/a3S2cdos18T1p4NFsJt1/o7d NEvptxyt LXSN+S577Qbp7ZPl79wvVmZxZ4wm8bhktaQ0j4oLOKKYRy5IVPhrI2VMWYrgAFcgvhxm0ED/POcrtYaDmTzU0au5RUm4huORYk2uqMjl9++qXk6ePxRc2gZNHmMgiF8gbisgokPdPSyRNu5VNaD3dYpYfmV3A+o2Nx5SOITO+3h8ZmwI8trmue8+plp+0l+va2CLmF+ZINkN/tCunYYEn8ARk3jmdX8NOcs97rg5BGldrWVx/EfeRvvlUqG/yckGAO0sZKVAgwc4NTeW/cy4586X/UufJJG6T2wJMYC7hPzZN8mlqXeVuEkFQg4oVb6G+1ZNC22mgKsMwT/9OzZUO8PdeH3A+b+No92bRAzeoSJaRrurjl+3Ca9VUUQcj/2U3dd7ilWmlW5olOtKLqj9WQo/oHlVisMO564wRKYlZ4R4/Pr8Zw942VTTJIw== 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 Mon, Oct 14, 2024 at 03:23:36AM +0000, Chen Ridong wrote: > From: Chen Ridong > > A memleak was found as bellow: > > unreferenced object 0xffff8881010d2a80 (size 32): > comm "mkdir", pid 1559, jiffies 4294932666 > hex dump (first 32 bytes): > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ > 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @............... > backtrace (crc 2e7ef6fa): > [] __kmalloc_node_noprof+0x394/0x470 > [] alloc_shrinker_info+0x7b/0x1a0 > [] mem_cgroup_css_online+0x11a/0x3b0 > [] online_css+0x29/0xa0 > [] cgroup_apply_control_enable+0x20d/0x360 > [] cgroup_mkdir+0x168/0x5f0 > [] kernfs_iop_mkdir+0x5e/0x90 > [] vfs_mkdir+0x144/0x220 > [] do_mkdirat+0x87/0x130 > [] __x64_sys_mkdir+0x49/0x70 > [] do_syscall_64+0x68/0x140 > [] entry_SYSCALL_64_after_hwframe+0x76/0x7e > > In the alloc_shrinker_info function, when shrinker_unit_alloc return > err, the info won't be freed. Just fix it. > > Fixes: 307bececcd12 ("mm: shrinker: add a secondary array for shrinker_info::{map, nr_deferred}") > Signed-off-by: Chen Ridong > --- > mm/shrinker.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/mm/shrinker.c b/mm/shrinker.c > index dc5d2a6fcfc4..92270413190d 100644 > --- a/mm/shrinker.c > +++ b/mm/shrinker.c > @@ -97,6 +97,7 @@ int alloc_shrinker_info(struct mem_cgroup *memcg) > > err: > mutex_unlock(&shrinker_mutex); > + kvfree(info); > free_shrinker_info(memcg); > return -ENOMEM; > } NAK. If in the future there going to one more error case after rcu_assign_pointer() we will end up with double free. This should be safer: diff --git a/mm/shrinker.c b/mm/shrinker.c index dc5d2a6fcfc4..763fd556bc7d 100644 --- a/mm/shrinker.c +++ b/mm/shrinker.c @@ -87,8 +87,10 @@ int alloc_shrinker_info(struct mem_cgroup *memcg) if (!info) goto err; info->map_nr_max = shrinker_nr_max; - if (shrinker_unit_alloc(info, NULL, nid)) + if (shrinker_unit_alloc(info, NULL, nid)) { + kvfree(info); goto err; + } rcu_assign_pointer(memcg->nodeinfo[nid]->shrinker_info, info); } mutex_unlock(&shrinker_mutex); -- Kiryl Shutsemau / Kirill A. Shutemov