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 432E1C3ABDA for ; Wed, 14 May 2025 18:42:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DF2EB6B0098; Wed, 14 May 2025 14:42:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D77766B0099; Wed, 14 May 2025 14:42:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C17DE6B009A; Wed, 14 May 2025 14:42:47 -0400 (EDT) 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 A06136B0098 for ; Wed, 14 May 2025 14:42:47 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 2DB06140FFA for ; Wed, 14 May 2025 18:42:48 +0000 (UTC) X-FDA: 83442384816.09.E05D20D Received: from out-184.mta0.migadu.com (out-184.mta0.migadu.com [91.218.175.184]) by imf13.hostedemail.com (Postfix) with ESMTP id 1D8FA2000C for ; Wed, 14 May 2025 18:42:45 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=Sd0foDw8; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf13.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.184 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747248166; a=rsa-sha256; cv=none; b=ffWsUD1L1ktKWNVFEvgs1kvIzXkKYCDEQ48kpJRdf22T11IKQprEAmvH5dlCHGUEVmAPh3 U13U/QFUYdS8F1To7lO7p9N0KVKMQRKAQYJ0qjMZKURFdiVQog50uOwe5iH53pqp5zl3ED gqAIWIoB/Erp/VdI/fUwLHbIASG99C8= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=Sd0foDw8; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf13.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.184 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747248166; 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=etryLQv1PQn8hNrBUm3oFgL1RI4JaFP1NEKUUORZ0W4=; b=g4Xveg3eR0NNbaFaiK9+WfRpwQ+vwHRZ6Mgu4s03dqzo/j6GB7/2jEqkXfzSb57HMBNUP8 JEDJwMI6t+aYWgz939ubmQgBqVeqNPrnVukaKmTJg2Rfvj8jDYryx3ixUxTHzy8+a3lv/q /wYpHFEXCJfEeQ1kmFbJZxBSAqpgFIc= 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=1747248164; 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: in-reply-to:in-reply-to:references:references; bh=etryLQv1PQn8hNrBUm3oFgL1RI4JaFP1NEKUUORZ0W4=; b=Sd0foDw8hTyLha3GBCyFbPszUlMlfOiyuB8MM6D8ax08Ur18pDkzsPgo1ZDU3tADiJcFvR hVs8N0Z1cEs0GP6UaeqjfCC82z82c2jtj2Ne/PlQ3IriJckhYtsZjTWmvLcDzZL8WWGw1H QFJPu8f70R7oPFAHu4ZOBGSQ4RIE7B8= From: Shakeel Butt To: Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , Vlastimil Babka , Alexei Starovoitov , Sebastian Andrzej Siewior , Harry Yoo , Yosry Ahmed , bpf@vger.kernel.org, linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Meta kernel team Subject: [PATCH v2 5/7] memcg: make __mod_memcg_lruvec_state re-entrant safe against irqs Date: Wed, 14 May 2025 11:41:56 -0700 Message-ID: <20250514184158.3471331-6-shakeel.butt@linux.dev> In-Reply-To: <20250514184158.3471331-1-shakeel.butt@linux.dev> References: <20250514184158.3471331-1-shakeel.butt@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Stat-Signature: nxyta9gsfrasewo74sg5w5hpz6ou673q X-Rspam-User: X-Rspamd-Queue-Id: 1D8FA2000C X-Rspamd-Server: rspam06 X-HE-Tag: 1747248165-216046 X-HE-Meta: U2FsdGVkX18/QbDQXFoOt6jAjlFy698NbW06XAqQIML+9Hv6BUV/64wqbPXnzzeGyNVT4Iwpugb+wydPxMKZf35qYYORzZsjq+AvhnoQZ5IcNmzYpbRMjNeR+ElsdsbaD6hbInu8wJgWfnMRGCHOud0IwWgCoDMmfIBrgXvwChQ2uU5LxYmka7/hg0wlvSFt/tnFgcCJXAhE2EfjQ+8pmXmUtAEwJ325YOjF+NYny01dSSkeIk4n2sVuP17xR08OUFNn3rC9JhfIgKt1FWD5l9hYq0o824KzxGJKOpZPdyDGaRBFiqVXyvfpGFDTfBpt3VhIEZ2r/xK3v8zPbgTMfvDgm+jw1QJHNoQIHwmZ/Na+B0aayhmr/MN3aRx0pVZ++k0XaaNPUOma0t1uqzavl7F+nE+uWg6zxlPnldWrcElTWHALprWO7LVIlS5r/slOYPnFHYTQPUANAWTPpB3KwJfoX3uAzp9dst3ubB9rtBoQvT2U8eDiT2ny7FNZ6HvX5Nhx9jnb4OztOXyfpAnsK4yeNbSNf943m9gAu8HXGUcFvCFjX42ytXG7M5PeY5/OYb1+YBPqRKGdNBAlmyOxlGAYAUI2iQBfFajnpvh3v8jclrGXfj4XqecTlvmIb9i0V3W2Yvw7xu+J8cMMV7949lSwPg75atXEpPwS0tqec0syBRT+hFSOHB98ZT+r2QTl4al/67UwgB7Sda0ZMqtvNzQXXJcya+CEDF6zmzD283FFe2b7zZp5Fxl2OaNAECsXxc4najxIAo/DftZN5kPG3/Zihm/2g3r0cHhfngT0XG5Qzmf4jG4oXFnGfrwRMUpifCDGcsrgLXvRkimlKOOATdaoEGg2nvq6VQX/iYcllL0g/eEKvhxiZP0+00dERco3iBeGoqKSI36AaFCBSi7KR4DXg+4jGOXVDtwWCxWkEPT4xC5uaQcyoFm9exO9En35dPbeSV2rG78O3sr4hS3 AOdy0ZOH 1ocOeZyluZJhLGiy4MDc8LuejzyardeptPIqNstntQht/w4+J1fAnQnEQ4cNZJZvYXdUOXmqn4y2nxAn3tbyQP5+7x65T3W1oAA9GPJCQXvFAoumA4mgk0OXq1hBdvh8hkgkVVY5HHiY9RoV3YAwWiHm2y/28rkAzI6lvNb1GSsl4Bc7fmk//quA6Xcia1UTXb+jR/ItiTHxXSUitaedx+jCG5peQIX12mXbv 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: Let's make __mod_memcg_lruvec_state re-entrant safe and name it mod_memcg_lruvec_state(). The only thing needed is to convert the usage of __this_cpu_add() to this_cpu_add(). There are two callers of mod_memcg_lruvec_state() and one of them i.e. __mod_objcg_mlstate() will be re-entrant safe as well, so, rename it mod_objcg_mlstate(). The last caller __mod_lruvec_state() still calls __mod_node_page_state() which is not re-entrant safe yet, so keep it as is. Signed-off-by: Shakeel Butt Acked-by: Vlastimil Babka --- mm/memcontrol.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 0923072386c2..1071db0b1df8 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -727,7 +727,7 @@ unsigned long memcg_page_state_local(struct mem_cgroup *memcg, int idx) } #endif -static void __mod_memcg_lruvec_state(struct lruvec *lruvec, +static void mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, int val) { @@ -745,10 +745,10 @@ static void __mod_memcg_lruvec_state(struct lruvec *lruvec, cpu = get_cpu(); /* Update memcg */ - __this_cpu_add(memcg->vmstats_percpu->state[i], val); + this_cpu_add(memcg->vmstats_percpu->state[i], val); /* Update lruvec */ - __this_cpu_add(pn->lruvec_stats_percpu->state[i], val); + this_cpu_add(pn->lruvec_stats_percpu->state[i], val); val = memcg_state_val_in_pages(idx, val); memcg_rstat_updated(memcg, val, cpu); @@ -775,7 +775,7 @@ void __mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, /* Update memcg and lruvec */ if (!mem_cgroup_disabled()) - __mod_memcg_lruvec_state(lruvec, idx, val); + mod_memcg_lruvec_state(lruvec, idx, val); } void __lruvec_stat_mod_folio(struct folio *folio, enum node_stat_item idx, @@ -2527,7 +2527,7 @@ static void commit_charge(struct folio *folio, struct mem_cgroup *memcg) folio->memcg_data = (unsigned long)memcg; } -static inline void __mod_objcg_mlstate(struct obj_cgroup *objcg, +static inline void mod_objcg_mlstate(struct obj_cgroup *objcg, struct pglist_data *pgdat, enum node_stat_item idx, int nr) { @@ -2537,7 +2537,7 @@ static inline void __mod_objcg_mlstate(struct obj_cgroup *objcg, rcu_read_lock(); memcg = obj_cgroup_memcg(objcg); lruvec = mem_cgroup_lruvec(memcg, pgdat); - __mod_memcg_lruvec_state(lruvec, idx, nr); + mod_memcg_lruvec_state(lruvec, idx, nr); rcu_read_unlock(); } @@ -2847,12 +2847,12 @@ static void __account_obj_stock(struct obj_cgroup *objcg, struct pglist_data *oldpg = stock->cached_pgdat; if (stock->nr_slab_reclaimable_b) { - __mod_objcg_mlstate(objcg, oldpg, NR_SLAB_RECLAIMABLE_B, + mod_objcg_mlstate(objcg, oldpg, NR_SLAB_RECLAIMABLE_B, stock->nr_slab_reclaimable_b); stock->nr_slab_reclaimable_b = 0; } if (stock->nr_slab_unreclaimable_b) { - __mod_objcg_mlstate(objcg, oldpg, NR_SLAB_UNRECLAIMABLE_B, + mod_objcg_mlstate(objcg, oldpg, NR_SLAB_UNRECLAIMABLE_B, stock->nr_slab_unreclaimable_b); stock->nr_slab_unreclaimable_b = 0; } @@ -2878,7 +2878,7 @@ static void __account_obj_stock(struct obj_cgroup *objcg, } } if (nr) - __mod_objcg_mlstate(objcg, pgdat, idx, nr); + mod_objcg_mlstate(objcg, pgdat, idx, nr); } static bool consume_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes, @@ -2947,13 +2947,13 @@ static void drain_obj_stock(struct obj_stock_pcp *stock) */ if (stock->nr_slab_reclaimable_b || stock->nr_slab_unreclaimable_b) { if (stock->nr_slab_reclaimable_b) { - __mod_objcg_mlstate(old, stock->cached_pgdat, + mod_objcg_mlstate(old, stock->cached_pgdat, NR_SLAB_RECLAIMABLE_B, stock->nr_slab_reclaimable_b); stock->nr_slab_reclaimable_b = 0; } if (stock->nr_slab_unreclaimable_b) { - __mod_objcg_mlstate(old, stock->cached_pgdat, + mod_objcg_mlstate(old, stock->cached_pgdat, NR_SLAB_UNRECLAIMABLE_B, stock->nr_slab_unreclaimable_b); stock->nr_slab_unreclaimable_b = 0; -- 2.47.1