From patchwork Thu Mar 13 05:48:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shakeel Butt X-Patchwork-Id: 14014355 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 E5ADEC282DE for ; Thu, 13 Mar 2025 05:48:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EC929280002; Thu, 13 Mar 2025 01:48:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E52B4280001; Thu, 13 Mar 2025 01:48:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CF48D280002; Thu, 13 Mar 2025 01:48:21 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id B1E74280001 for ; Thu, 13 Mar 2025 01:48:21 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 8C605161A25 for ; Thu, 13 Mar 2025 05:48:23 +0000 (UTC) X-FDA: 83215447686.10.00B3E0A Received: from out-179.mta0.migadu.com (out-179.mta0.migadu.com [91.218.175.179]) by imf06.hostedemail.com (Postfix) with ESMTP id DF7DB180003 for ; Thu, 13 Mar 2025 05:48:21 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=ISR4blKM; spf=pass (imf06.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.179 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741844902; 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:references:dkim-signature; bh=+8crqbD29LSFVEIGtcAdrNxdm4twGCIk3Dwd45ote5E=; b=s9zHQCK8Nq80JpsV2G3fIIHGqE+Xz7pN+dHPYT4izaGhVF/V7QM4XXIkq1I2XajZrppomF xwSu0WJsiuUAvVH5HoPvj3lcwe6eaJTzIeeJ+dlegiSSSQ5siZSdB/vhRDJfInO9aFN+kb 5IJGcFPiJFToezzphXWcyKEHbCXg4os= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=ISR4blKM; spf=pass (imf06.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.179 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741844902; a=rsa-sha256; cv=none; b=mmTEcLFJA1rbPqcAA0hs3sYXZWB5/LwwNPqrpSYIV19B3Xsm3tyHap/+/AqIJpPmt/UZAG b8Eb+2zBzWLEolC4aKu7mw+AlJfyK/SBWcc2mFsLHom1KhOIqsQKl5iAElRmO/G+nVXgJb tZaB38frDQB/vmBfmtOcAmisoGkSum0= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1741844898; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=+8crqbD29LSFVEIGtcAdrNxdm4twGCIk3Dwd45ote5E=; b=ISR4blKMWbn1Gw1Y7OO9kCorcO7ZLrAbHXWZBgblKZdMfChIsp8oZ1KwNGXICgyCG38BPX 0Z/0WjlHlK29AG2uiilYcnTyeRlGdojdRdlwDiSLkNCnJfXSemQu69HF3w08qj+UWdqKcv L3W+SoYDjwVURSZnGuHYcx7xUGhNjRY= From: Shakeel Butt To: Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Meta kernel team Subject: [PATCH] memcg: avoid refill_stock for root memcg Date: Wed, 12 Mar 2025 22:48:12 -0700 Message-ID: <20250313054812.2185900-1-shakeel.butt@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Rspamd-Queue-Id: DF7DB180003 X-Rspamd-Server: rspam03 X-Stat-Signature: 7fqzcrekpwh33mi8o5gmu1s9x8f9xq8k X-HE-Tag: 1741844901-774070 X-HE-Meta: U2FsdGVkX19h+WcZrX9UY5e0gq4j11WguILiw513PPxR/ZsTIIDZZfxix0bg5uZa/ZfTZddu9mhLqPjnYazQbzmKhTSjklnxcJkrggDzv0T2Qv5EhjFAhMi5ikL0XbN8SkDOTAXlrCC56rrJZfVs82hIhfipflhWmd3COWOCkb+EwhcqUCSV5ptDse7vIwvAF8dZ8LrFweXYSenEo0FjaeEWAq6rXraDqkTefWiEcdl/Ud9fvc2lwM4z+IjgqqXbZw/S0iBaD7imBXoGYBeSIl1XkBjYQUiQWfDHkXwhAm8SwAKMQ1nmEEy89SMhJRcNj5EChjPmpVcmQMeh5UeEf8W6MOewdDQ/T2nQFJMPDaztLR+wmnAkcmY2Ucc5Qvn4cCOD5l812RxkJVFQJ49NlEpdfTq6l3gC2QXh4g/kTk9QzV6AvA1LlggI+0d5N6gFdL7QOUiSXHNakMRm7VNfThCNkgxxG2tNNG+rxRJTn04UDvk4RQPXIiAgZCCUuwDLm29p2l6En3LgSeKoMLQtDl8N7vFr1gvIHnpTob7AHfKgQIL8sDvW0TyvKOlUjaUoGjqiT5SYr244zgqAcfVst4z4C6v8LzY90i7k/sHDUaPtKfFbXqkhEj7mc8QnQTc80/MkhEazyW28IMXOtho045PGcVenycb3TYkydKTI+Jfdkt5rTJIpwe9ZmCKlp8IzlUQwf94zrAUv/8+JBQ9DQuwh1jQ8Tqg5SFM30KTeqY03zLd4e/20BCOMCCdfoqN/2X8CZookQXCokeof/7grvM0WrBvhdCRamjaCmf7/nh8zj8JbQPBpOdkmNE73BH5sFxf8RcJJ99KRvekbap3d9Q6NlkO3mAEon0XttgoVljQzbaSGUTYiDbVGeBDoI86X3/IQKdNzdBwF3HK/lxRkcQ06GKqHgM7uiSQbqW8X7GUFFkcn//ZesWb8lfbZENb64ij0DIl34VqazmHV6tI t8lSHsxU qhVl0GMB0M3h93jBqJ0+PS5xtqLYBOYne1P+EjNOAnipQahgaqwFTcySY4PPE2V0P+pP6lRXV+nFQT3bux2w6uIxyr0r5yJLpVg72y1d2Q0dH+AwpY2YXrLWW7OO7n0vwiZpX5QE8uXoe41mRvIxpIYWZanQN4xQISvAlbRvTnJ+zNj1kwxzOLKZecW/dOyVWJo96dTz/ff9Zq7z9oL3dT8Anbg== 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: We never charge the page counters of root memcg, so there is no need to put root memcg in the memcg stock. At the moment, refill_stock() can be called from try_charge_memcg(), obj_cgroup_uncharge_pages() and mem_cgroup_uncharge_skmem(). The try_charge_memcg() and mem_cgroup_uncharge_skmem() are never called with root memcg, so those are fine. However obj_cgroup_uncharge_pages() can potentially call refill_stock() with root memcg if the objcg object has been reparented over to the root memcg. Let's just avoid refill_stock() from obj_cgroup_uncharge_pages() for root memcg. Signed-off-by: Shakeel Butt Acked-by: Michal Hocko --- mm/memcontrol.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index e08ce52caabd..393b73aec6dd 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2643,7 +2643,8 @@ static void obj_cgroup_uncharge_pages(struct obj_cgroup *objcg, mod_memcg_state(memcg, MEMCG_KMEM, -nr_pages); memcg1_account_kmem(memcg, -nr_pages); - refill_stock(memcg, nr_pages); + if (!mem_cgroup_is_root(memcg)) + refill_stock(memcg, nr_pages); css_put(&memcg->css); }