From patchwork Fri Mar 14 06:15:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shakeel Butt X-Patchwork-Id: 14016304 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 7C97CC28B2F for ; Fri, 14 Mar 2025 06:15:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C1E98280006; Fri, 14 Mar 2025 02:15:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BD2B3280003; Fri, 14 Mar 2025 02:15:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A259C280006; Fri, 14 Mar 2025 02:15:37 -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 827C4280003 for ; Fri, 14 Mar 2025 02:15:37 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 486061C7EA7 for ; Fri, 14 Mar 2025 06:15:38 +0000 (UTC) X-FDA: 83219145156.05.9549D82 Received: from out-172.mta1.migadu.com (out-172.mta1.migadu.com [95.215.58.172]) by imf24.hostedemail.com (Postfix) with ESMTP id 984D6180007 for ; Fri, 14 Mar 2025 06:15:36 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=K7191N8V; spf=pass (imf24.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.172 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=1741932936; 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=Nc+pYdC/xOdelwTJP89jkCPlJBy7KhpTV1fBT5yIKFQ=; b=eT1z36n1GuZUjaLmCOwsD9zEA18xNEHd050pFnYCe9HHIU2mqC7LEuaxqMqdnFtV8UOUQ4 eokAFyo7sqDzCROScY+hNCl4j7jESLfpmFW46oQD+0R9juN5rwffrpRpUes0waoGnn9kj8 sYEVNxZvLVlxrEGcOXtNXGhbqaBRym4= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=K7191N8V; spf=pass (imf24.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.172 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=1741932936; a=rsa-sha256; cv=none; b=pcVUZ2Rx00eaLfzs4DNTv9lbDOn5i+TfJVAiT+6poN7E4jlmCBcyOKSYbkgKCWuJQU6UJu u+KybzjVCrHap7idkXN8qvOuKvpw5QVJkQ+UHg4xlUjbpodRQNUsLDG0JM9c8rtF0DiGKJ RseLU2gkiZLrmRO4f1uyQdnK7TOVeMI= 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=1741932935; 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=Nc+pYdC/xOdelwTJP89jkCPlJBy7KhpTV1fBT5yIKFQ=; b=K7191N8VG4pwJwKAtbd57HzRApbLYVKRwODKb5dG+bBi82YQH9CObHi+r08ica5eqBu7tJ xD77JPOtkH2IbGmEsx+h8XqYr/yBfI8NF7nycM1cLg4A2nsTvABOYTPnxQkKGJENlzd59V yqtmNKe3bpW0fqRXy5bQUx64hkyFLiY= From: Shakeel Butt To: Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , Vlastimil Babka , Sebastian Andrzej Siewior , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Meta kernel team Subject: [RFC PATCH 03/10] memcg: introduce memcg_uncharge Date: Thu, 13 Mar 2025 23:15:04 -0700 Message-ID: <20250314061511.1308152-4-shakeel.butt@linux.dev> In-Reply-To: <20250314061511.1308152-1-shakeel.butt@linux.dev> References: <20250314061511.1308152-1-shakeel.butt@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Rspamd-Queue-Id: 984D6180007 X-Rspamd-Server: rspam03 X-Stat-Signature: nm3s7m7ux8b6o6as8sujw19i9wgtdxot X-HE-Tag: 1741932936-35561 X-HE-Meta: U2FsdGVkX1+9+4ChRtsHlpzWBVl+9bk6hjSgf/oFE/FQlEx07CYZLbCMXdeNIJ2uufvxg4Vt9Zjw1JBiZzXIpzNKGb5xd+vNjUJRummsxTQqJP98l/YmQSw1Du3oXbb4Lz3atO+OMUvbxZ4L3blpOK/UDSv8GXO94K9A9qo0ocyINxmtqV+RFMxUu2l2QAmmjh6ablqTKe80jpn3TTuMBMQ+AOEaBH8dGzR50kbyRFR2LiDAvwLV5L0s0KJt6sHVgbgHOzVZq28dd8n9AkltG8b4dGtkK57If+jSvY+Zn/1bE1Q+LCyDzIC9QQrlCg78Sv884KIcDlhfFQ3i1SCK0hFSi5p+vSorPImDxYnd2k32Szh3tFnXaI5xH+Yk5uoF47XLJUxxaGYMVgNuGccn3nEU6kdEWUFOEJg5Hvd1C+SPtIhUnlMy+LAJCBSjtmKUpnb8aX3jT1vi9gxJnybCRYjM1nm4eueigJShzukmPRgVq8Po/yJw6a5oU5wWxQP712SzCziQ3BV1Rd1m5yNrv0jApgCecWQ1EoZs5cEtrlK46CEvQaJFWDJORAz3fgfQwtZLD0lt3PtX9UNyXSf0WVisdoWJmdNc7p4/G5cPfd++ggB+FjRVNjWI/5DXRiotlmUg++xgLU9XhGJfFBlRrenuob5lWcuglsfyAtE+Dar4KSeqZRpJBwywSnYWN3Ac6IMONXmMAnt+t4QOOQlAO3KrASd8N8P7n95yPMFiihjv3PhihLObk5XPotmQvfTf2b8FUi8kw+l5LUBJB01320Cv64oBllOMgId79IX51n1sNMgMJzzmSWHSiOo+rOYhdoMc3But+1ariIw49EzUmh7jZp9Opk9zjgV4Ouv+397HySkbP93ABllQW+qQ587ewTWJzedlaOPiPr4H6S3ZUoHFtlr7QdHNM1Fj65ApDQtWAxm3V0UlcoaLe0i1i5vNaDnyP8KQN+5uGR3yL8n 9dZ7V7gs HuZTsNbkER9u/h8zFzO56Bg5FyUnjyeaw4Xee90gt+eW9rGgTIKmKkUrIrAfj/n9bEGoobgSfITvgLFkrUHjkpbyJXN6BVONXgNR+ajmO23cBhh2rpzqE5VUKL/+rjIOya9cq9d0WQDlodb7sUGrbZL63J9vZD0js0Fj1th8e8BVBB/ozFT99g6sNoG7FObmP/qBiln9P8nrMqonXpipPvHlAEA== 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: At multiple places in memcontrol.c, the memory and memsw page counters are being uncharged. This is error-prone. Let's move the functionality to a newly introduced memcg_uncharge and call it from all those places. Signed-off-by: Shakeel Butt Acked-by: Vlastimil Babka --- mm/memcontrol.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 28cb75b5bc66..b54e3a1d23bd 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -1816,6 +1816,13 @@ static bool consume_stock(struct mem_cgroup *memcg, unsigned int nr_pages, return ret; } +static void memcg_uncharge(struct mem_cgroup *memcg, unsigned int nr_pages) +{ + page_counter_uncharge(&memcg->memory, nr_pages); + if (do_memsw_account()) + page_counter_uncharge(&memcg->memsw, nr_pages); +} + /* * Returns stocks cached in percpu and reset cached information. */ @@ -1828,10 +1835,7 @@ static void drain_stock(struct memcg_stock_pcp *stock) return; if (stock_pages) { - page_counter_uncharge(&old->memory, stock_pages); - if (do_memsw_account()) - page_counter_uncharge(&old->memsw, stock_pages); - + memcg_uncharge(old, stock_pages); WRITE_ONCE(stock->nr_pages, 0); } @@ -1893,9 +1897,7 @@ static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages) * In case of unlikely failure to lock percpu stock_lock * uncharge memcg directly. */ - page_counter_uncharge(&memcg->memory, nr_pages); - if (do_memsw_account()) - page_counter_uncharge(&memcg->memsw, nr_pages); + memcg_uncharge(memcg, nr_pages); return; } __refill_stock(memcg, nr_pages); @@ -2855,12 +2857,8 @@ static struct obj_cgroup *drain_obj_stock(struct memcg_stock_pcp *stock) mod_memcg_state(memcg, MEMCG_KMEM, -nr_pages); memcg1_account_kmem(memcg, -nr_pages); - if (!mem_cgroup_is_root(memcg)) { - page_counter_uncharge(&memcg->memory, nr_pages); - if (do_memsw_account()) - page_counter_uncharge(&memcg->memsw, - nr_pages); - } + if (!mem_cgroup_is_root(memcg)) + memcg_uncharge(memcg, nr_pages); css_put(&memcg->css); } @@ -4689,9 +4687,7 @@ static inline void uncharge_gather_clear(struct uncharge_gather *ug) static void uncharge_batch(const struct uncharge_gather *ug) { if (ug->nr_memory) { - page_counter_uncharge(&ug->memcg->memory, ug->nr_memory); - if (do_memsw_account()) - page_counter_uncharge(&ug->memcg->memsw, ug->nr_memory); + memcg_uncharge(ug->memcg, ug->nr_memory); if (ug->nr_kmem) { mod_memcg_state(ug->memcg, MEMCG_KMEM, -ug->nr_kmem); memcg1_account_kmem(ug->memcg, -ug->nr_kmem);