From nobody Sat Apr 11 11:41:34 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8CAD6C64EC4 for ; Mon, 6 Mar 2023 15:42:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230316AbjCFPmr (ORCPT ); Mon, 6 Mar 2023 10:42:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46380 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230185AbjCFPmm (ORCPT ); Mon, 6 Mar 2023 10:42:42 -0500 Received: from mail-qv1-xf2c.google.com (mail-qv1-xf2c.google.com [IPv6:2607:f8b0:4864:20::f2c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69BF73252A; Mon, 6 Mar 2023 07:42:10 -0800 (PST) Received: by mail-qv1-xf2c.google.com with SMTP id g9so5192248qvt.8; Mon, 06 Mar 2023 07:42:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678117329; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=9pBtlfX3iX0mnIfMkXEb8DAWvw6xGcJJJjqlGD9DGtU=; b=HI57W0h/lsMjojvv+zd6JUMMWfpuLUUkHmJdcSeTT3huiaVqKw0ZaYXEVUHoyQoCpd 3wcHeR6DHkno5XMBlny+fNZ2lOjN82n2YQshjBKIJr+wqAAp4HxFny5wOeIUJ6upLr/r 216Nv2vhFDjRN01F616HEFsYeyB46dqPqDHxkh9lbfqAjGxU0VqXw9/3wS1zZ3+VyiUl AWuagchq1EPyD5ftP4eYCkr9P+rPwXFj2OD9PePU1jgW2gRkA9MlpwLpIeb5m2KLFiPt bbS1upjBPwIDNY9pav64h/RTc3NDCax2XMV3HalH+0KH+rOaOAgP7n0T0m1W9whMv+GX in1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678117329; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9pBtlfX3iX0mnIfMkXEb8DAWvw6xGcJJJjqlGD9DGtU=; b=oaWMwJFgyly7Z/xXzVTBrcegmtzidZFvDi1E5lgswzFM22q+6fgIWTUqUeXpAUm++W YLTZsBCiYr5xt7KPoekiCZwjoESqEfQK43Cd8Wb1hbdA+j1zO1cSQnkYvd+BkR/NVukg ZE2IPRgo7Oc3x9I7T33nTb4SKwr9+XwFg1WNK6QIFGo2q5q1nHFXSHnlJKHL8TEscA+Z VUYsvW+UzoKTU3vszVFuAjFIK/fcAObpGtX/65TXlcvkE5JgZW3NIuaboAxMHX4al1G/ bUQDTTEyOd1pFIjkvMlvnbfJipf1BQYdSrKhPVJ7X+Vpi8ndJ5LqetkM6uEjGfmlOdoh vfHA== X-Gm-Message-State: AO0yUKWj12mwuJOl58vfPHpGJauDRXaB5blOQ+I6GFQpTiJivXb9yhbu 1dWDKTdFlr+KbjEK03wq0vM= X-Google-Smtp-Source: AK7set+PYHXQ4/t05TqYV2yAc6h2RjGW1O2Vxvoz+ZokI1GTziV92hpARDUoYLqNanP2krsSzegEJQ== X-Received: by 2002:a05:6214:240e:b0:56e:b91f:aeb4 with SMTP id fv14-20020a056214240e00b0056eb91faeb4mr18753964qvb.36.1678117329268; Mon, 06 Mar 2023 07:42:09 -0800 (PST) Received: from MSI-FindNS.localdomain ([107.191.40.138]) by smtp.gmail.com with ESMTPSA id u19-20020a05620a121300b007424376ca4bsm7618400qkj.18.2023.03.06.07.42.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Mar 2023 07:42:08 -0800 (PST) From: Yue Zhao To: akpm@linux-foundation.org Cc: roman.gushchin@linux.dev, hannes@cmpxchg.org, mhocko@kernel.org, shakeelb@google.com, muchun.song@linux.dev, willy@infradead.org, linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, tangyeechou@gmail.com, Yue Zhao Subject: [PATCH v2, 1/4] mm, memcg: Prevent memory.oom.group load/store tearing Date: Mon, 6 Mar 2023 23:41:35 +0800 Message-Id: <20230306154138.3775-2-findns94@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230306154138.3775-1-findns94@gmail.com> References: <20230306154138.3775-1-findns94@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The knob for cgroup v2 memory controller: memory.oom.group is not protected by any locking so it can be modified while it is used. This is not an actual problem because races are unlikely (the knob is usually configured long before any workloads hits actual memcg oom) but it is better to use READ_ONCE/WRITE_ONCE to prevent compiler from doing anything funky. The access of memcg->oom_group is lockless, so it can be concurrently set at the same time as we are trying to read it. Signed-off-by: Yue Zhao Acked-by: Michal Hocko Acked-by: Roman Gushchin Acked-by: Shakeel Butt --- mm/memcontrol.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 5abffe6f8389..06821e5f7604 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2067,7 +2067,7 @@ struct mem_cgroup *mem_cgroup_get_oom_group(struct ta= sk_struct *victim, * highest-level memory cgroup with oom.group set. */ for (; memcg; memcg =3D parent_mem_cgroup(memcg)) { - if (memcg->oom_group) + if (READ_ONCE(memcg->oom_group)) oom_group =3D memcg; =20 if (memcg =3D=3D oom_domain) @@ -6623,7 +6623,7 @@ static int memory_oom_group_show(struct seq_file *m, = void *v) { struct mem_cgroup *memcg =3D mem_cgroup_from_seq(m); =20 - seq_printf(m, "%d\n", memcg->oom_group); + seq_printf(m, "%d\n", READ_ONCE(memcg->oom_group)); =20 return 0; } @@ -6645,7 +6645,7 @@ static ssize_t memory_oom_group_write(struct kernfs_o= pen_file *of, if (oom_group !=3D 0 && oom_group !=3D 1) return -EINVAL; =20 - memcg->oom_group =3D oom_group; + WRITE_ONCE(memcg->oom_group, oom_group); =20 return nbytes; } --=20 2.17.1 From nobody Sat Apr 11 11:41:34 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5B8B6C64EC4 for ; Mon, 6 Mar 2023 15:42:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230285AbjCFPmy (ORCPT ); Mon, 6 Mar 2023 10:42:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46346 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230185AbjCFPmt (ORCPT ); Mon, 6 Mar 2023 10:42:49 -0500 Received: from mail-qt1-x835.google.com (mail-qt1-x835.google.com [IPv6:2607:f8b0:4864:20::835]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8F43922DCC; Mon, 6 Mar 2023 07:42:14 -0800 (PST) Received: by mail-qt1-x835.google.com with SMTP id l18so10986655qtp.1; Mon, 06 Mar 2023 07:42:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678117333; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=0NtQyJ6eQBb0wGTDfYWZm4PPrLnDXxCUuuQDDh4+5sU=; b=p6QOaLsOhtyQJzkmQb72krbjZZTYJqL3+85RbgaTSEfMrdL/bMTMGHgczRpwUo3QWG 7+j2vCkJDM9ruYYy+Nfu3XvmdOG8slzKlROb03WCQdG8DDGqhGgQqvRJOhNL8pFLrmmI +ev1QP60Jnuv1fKaWdyuD+HazZp1e/27BIpKObz53uW92JMY5YhWsqHKGt3WSE57mUEs ZQphWrShLIPoNvsh0QjWJrUKOdv6ocOuNswcj7aP8e+ueiH02tCrQaqF0bqLiihZWKWv DyqCYh0Me+WO8Ftqx1ReuWcYmdt/cO7hbA9z9IsmPYdp0El45dD6vMPePBkHn1+jhLNx pejg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678117333; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=0NtQyJ6eQBb0wGTDfYWZm4PPrLnDXxCUuuQDDh4+5sU=; b=wDcBWzUOz0O5+Nuqgu91PI6TeFisGYa4wJEN5KWYUzQOjXz8WpzWXyExUjuLv7L522 COptpUYuEtYP9IsON6ht/lnqTq5sN/H0L1Bt+dhRMbGIMV8EU3+rKMRpcuoXEKD+v8K6 FkHORiih3HgDsPTOZicr/EGWaEC9RY6U+QJJTxy6vkjPbTkppf9b5QrmzURLy3KfUqL4 0RuvX/1eDa5H17F+DjfQUsXzOR8qpd7lIkrFMh6PQDmGbXMui4hhqhJfl4Vuu/4g6pIG 1CIkjlIcdneQcn3Sgmrr2fhcRR+e9L+PqbhRK0kWhriRUi0EfN0PpMCwY6O+SUT+PtDs yDrg== X-Gm-Message-State: AO0yUKVa4kXjNNLYUzUi4cbJp74pIvxLg5+sHM3EeD3L/wfXBfotZP7/ 6+1aBS0h/4gWdq6I/sGP6a4= X-Google-Smtp-Source: AK7set//PKS1+aICL/kDFtE+6AbfSA+d0toJvyGobvIzhfwP2rlswkxPCWAkAUTT7evRVVYZWD05kg== X-Received: by 2002:ac8:5e4a:0:b0:3b8:2ea9:a09c with SMTP id i10-20020ac85e4a000000b003b82ea9a09cmr19719350qtx.1.1678117333372; Mon, 06 Mar 2023 07:42:13 -0800 (PST) Received: from MSI-FindNS.localdomain ([107.191.40.138]) by smtp.gmail.com with ESMTPSA id u19-20020a05620a121300b007424376ca4bsm7618400qkj.18.2023.03.06.07.42.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Mar 2023 07:42:13 -0800 (PST) From: Yue Zhao To: akpm@linux-foundation.org Cc: roman.gushchin@linux.dev, hannes@cmpxchg.org, mhocko@kernel.org, shakeelb@google.com, muchun.song@linux.dev, willy@infradead.org, linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, tangyeechou@gmail.com, Yue Zhao Subject: [PATCH v2, 2/4] mm, memcg: Prevent memory.swappiness load/store tearing Date: Mon, 6 Mar 2023 23:41:36 +0800 Message-Id: <20230306154138.3775-3-findns94@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230306154138.3775-1-findns94@gmail.com> References: <20230306154138.3775-1-findns94@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The knob for cgroup v1 memory controller: memory.swappiness is not protected by any locking so it can be modified while it is used. This is not an actual problem because races are unlikely. But it is better to use READ_ONCE/WRITE_ONCE to prevent compiler from doing anything funky. The access of memcg->swappiness and vm_swappiness is lockless, so both of them can be concurrently set at the same time as we are trying to read them.=20 Signed-off-by: Yue Zhao Acked-by: Michal Hocko Acked-by: Roman Gushchin Acked-by: Shakeel Butt --- include/linux/swap.h | 8 ++++---- mm/memcontrol.c | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/linux/swap.h b/include/linux/swap.h index 209a425739a9..3f3fe43d1766 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -620,18 +620,18 @@ static inline int mem_cgroup_swappiness(struct mem_cg= roup *memcg) { /* Cgroup2 doesn't have per-cgroup swappiness */ if (cgroup_subsys_on_dfl(memory_cgrp_subsys)) - return vm_swappiness; + return READ_ONCE(vm_swappiness); =20 /* root ? */ if (mem_cgroup_disabled() || mem_cgroup_is_root(memcg)) - return vm_swappiness; + return READ_ONCE(vm_swappiness); =20 - return memcg->swappiness; + return READ_ONCE(memcg->swappiness); } #else static inline int mem_cgroup_swappiness(struct mem_cgroup *mem) { - return vm_swappiness; + return READ_ONCE(vm_swappiness); } #endif =20 diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 06821e5f7604..dca895c66a9b 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -4179,9 +4179,9 @@ static int mem_cgroup_swappiness_write(struct cgroup_= subsys_state *css, return -EINVAL; =20 if (!mem_cgroup_is_root(memcg)) - memcg->swappiness =3D val; + WRITE_ONCE(memcg->swappiness, val); else - vm_swappiness =3D val; + WRITE_ONCE(vm_swappiness, val); =20 return 0; } --=20 2.17.1 From nobody Sat Apr 11 11:41:34 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E3562C61DA4 for ; Mon, 6 Mar 2023 15:43:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231384AbjCFPnI (ORCPT ); Mon, 6 Mar 2023 10:43:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46876 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231174AbjCFPm5 (ORCPT ); Mon, 6 Mar 2023 10:42:57 -0500 Received: from mail-qt1-x836.google.com (mail-qt1-x836.google.com [IPv6:2607:f8b0:4864:20::836]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B1140B746; Mon, 6 Mar 2023 07:42:22 -0800 (PST) Received: by mail-qt1-x836.google.com with SMTP id d7so10918386qtr.12; Mon, 06 Mar 2023 07:42:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678117337; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=Pu8gC0LE8S+gTMZ95T5G8zWPtdy0mtS5OOYges0wR78=; b=SktXouP2u6iR+PuI3ihPB0oXgFl+wFxiiVq1JIZ3tE+tE4sOmr1Lbs5jbm66PznnlR kovLcAf/bc063xYce2U2FcEy7NfMkuYO8JoFH7K31GVBQBb6xAM2vzsJSlhVeunCYvRD 8EdtfAd7SDVWsB9Tp4JRbo732vcFHfMtgysX4rMVavgWY5Mox+K5fKlvGPputGgXIgaG DM57pLuWYHI3SwiTgJOzdvKFOO3gi8g3VBC8aMOstDyDvaevAbq4cFxgSKqswnbda0b0 nuxqThgomDx5Q1b2CAAy4IcQSGnfRE/6ejxbCiihoVF8U3zSeZ8nwbRo1HagXKSqXp0x kHVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678117337; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Pu8gC0LE8S+gTMZ95T5G8zWPtdy0mtS5OOYges0wR78=; b=C4QIhAgO7JDxm38iA69h+NM+Qm9uZjww0iNPmiVLLvfwUQdo9tFymeJXuqcPZVSkby i5dLLqEbRxM9zD7MfiXKIdS2lS8M9S0FynbeZ3rioml5kRj138UyCbLTuiFJLOFMQK1v VuLwe2IODvZ95XG6oYZZW4Kq5XbOmzoQ8JdSOdMRpR5H7Mivh6XmCWGnM/PgwwBgCGQg iCVqdPNmuAwn9j1pgFLrKOJvOk9bP+07gLjfUmhBpyct42Z/yvak4PwqdHgmZkvSj3uY elUM7UZf4JPK2U8RAK5iBdtDbWelL7/ASEkFeAESSI0QKCPBhUvUoOzljEQkUiQG4MOU lteQ== X-Gm-Message-State: AO0yUKUvoKQNN993RaBylzHPCPw0pDFwU4sAxHtl49V1r5nUvpV/kNIw E2hvgSqYGEHVW6L88cOIhPU= X-Google-Smtp-Source: AK7set+e4N84A/a0YvzVrdLmBBm2Bq6WtbGrELmEP1Eenmwcb6A7JCAiUo7ENQ31cT0sg9wOrRPUFw== X-Received: by 2002:a05:622a:303:b0:3bf:c407:10c6 with SMTP id q3-20020a05622a030300b003bfc40710c6mr16011007qtw.13.1678117337430; Mon, 06 Mar 2023 07:42:17 -0800 (PST) Received: from MSI-FindNS.localdomain ([107.191.40.138]) by smtp.gmail.com with ESMTPSA id u19-20020a05620a121300b007424376ca4bsm7618400qkj.18.2023.03.06.07.42.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Mar 2023 07:42:17 -0800 (PST) From: Yue Zhao To: akpm@linux-foundation.org Cc: roman.gushchin@linux.dev, hannes@cmpxchg.org, mhocko@kernel.org, shakeelb@google.com, muchun.song@linux.dev, willy@infradead.org, linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, tangyeechou@gmail.com, Yue Zhao Subject: [PATCH v2, 3/4] mm, memcg: Prevent memory.oom_control load/store tearing Date: Mon, 6 Mar 2023 23:41:37 +0800 Message-Id: <20230306154138.3775-4-findns94@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230306154138.3775-1-findns94@gmail.com> References: <20230306154138.3775-1-findns94@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The knob for cgroup v1 memory controller: memory.oom_control is not protected by any locking so it can be modified while it is used. This is not an actual problem because races are unlikely. But it is better to use READ_ONCE/WRITE_ONCE to prevent compiler from doing anything funky. The access of memcg->oom_kill_disable is lockless, so it can be concurrently set at the same time as we are trying to read it. Signed-off-by: Yue Zhao Acked-by: Roman Gushchin Acked-by: Shakeel Butt --- mm/memcontrol.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index dca895c66a9b..26605b2f51b1 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -4515,7 +4515,7 @@ static int mem_cgroup_oom_control_read(struct seq_fil= e *sf, void *v) { struct mem_cgroup *memcg =3D mem_cgroup_from_seq(sf); =20 - seq_printf(sf, "oom_kill_disable %d\n", memcg->oom_kill_disable); + seq_printf(sf, "oom_kill_disable %d\n", READ_ONCE(memcg->oom_kill_disable= )); seq_printf(sf, "under_oom %d\n", (bool)memcg->under_oom); seq_printf(sf, "oom_kill %lu\n", atomic_long_read(&memcg->memory_events[MEMCG_OOM_KILL])); @@ -4531,7 +4531,7 @@ static int mem_cgroup_oom_control_write(struct cgroup= _subsys_state *css, if (mem_cgroup_is_root(memcg) || !((val =3D=3D 0) || (val =3D=3D 1))) return -EINVAL; =20 - memcg->oom_kill_disable =3D val; + WRITE_ONCE(memcg->oom_kill_disable, val); if (!val) memcg_oom_recover(memcg); =20 --=20 2.17.1 From nobody Sat Apr 11 11:41:34 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 95ABBC61DA4 for ; Mon, 6 Mar 2023 15:43:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231320AbjCFPnO (ORCPT ); Mon, 6 Mar 2023 10:43:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47382 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230480AbjCFPnC (ORCPT ); Mon, 6 Mar 2023 10:43:02 -0500 Received: from mail-qt1-x82f.google.com (mail-qt1-x82f.google.com [IPv6:2607:f8b0:4864:20::82f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 30B9A7DB3; Mon, 6 Mar 2023 07:42:29 -0800 (PST) Received: by mail-qt1-x82f.google.com with SMTP id d7so10918678qtr.12; Mon, 06 Mar 2023 07:42:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1678117341; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=kK+Z862YESi30yZiQZC0bVwPclz8DCYbgAA/NRofcVQ=; b=MQT4Hnfv44YHIOGxCsajlC63JnDzxTzHLtNuHQ/4uiD559rPdzNVrnv4Px3cAWbxDT mINlBKvoJaziRxF2qQ48A+vB+8zsxIWkAgcnn431o0fdeuq+YmC8FrPglq91Yb0DDBkJ WCLdr+wil1dX/B6cEeylUBOsYJhZePeAW3jZ1aJkQWk2cbXPdeqFFkZtLAxMl1FEsIxI ZOYN/pszFbWfajWHX+xyZoGuf9/U9Vv9ybClKwIRhxirENLM5KmkGZl7e3gna1SBvxIm JgGvX3aNy1f0bzrfeRrAG0+mzAEsXE05Es60AK0gbwyXOMMURS2NJzZ+Y2ZsdTWsYAeT IXVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678117341; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=kK+Z862YESi30yZiQZC0bVwPclz8DCYbgAA/NRofcVQ=; b=nSD3VAJ9vUEZI5uvgdVezT/lIJ/19CbVTJiMwH3eEF5O5//x2noDWoosRlMMP/Bghh m7U/IDoY5zOk6bJu8qEKSTfZs0zct3gJxQ5l7nXe6fR+KAB97Bx8oNgtBfJwQsbiEows sg3NfQTrfL6DotTD+jOI024VluFfvX+XGKfCkQtGr/Pki9vv9LZAy9ILT5xOIVrPMpnW y2kRviZbhersIZD8KmUsmDp3oQbLZhqreTWxAGywkws288sLiL84f3FwC1KqQkfffm// 51gTRLCu8Tq780p7xB9whl8k1moxSE6JYOJbB3Mgxd/jwzDdPf1XRtex48Gznl+IG2Dg YAfw== X-Gm-Message-State: AO0yUKXhIM+pV8g3MVjD88pABSU+FVWh33dgO3+lIS2W6nPV6h1JWcEC HbIAjzXJ6SsqpVxwdm39g+I= X-Google-Smtp-Source: AK7set9H0BTWMzOhU3KF9k6OdGcn73zqo6lyLsqmCFPYgOIf9YsSnu6km3TTtQCJGL4RAvTZa3gmwA== X-Received: by 2002:ac8:7d95:0:b0:3bd:48:70a3 with SMTP id c21-20020ac87d95000000b003bd004870a3mr19059103qtd.1.1678117341520; Mon, 06 Mar 2023 07:42:21 -0800 (PST) Received: from MSI-FindNS.localdomain ([107.191.40.138]) by smtp.gmail.com with ESMTPSA id u19-20020a05620a121300b007424376ca4bsm7618400qkj.18.2023.03.06.07.42.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Mar 2023 07:42:21 -0800 (PST) From: Yue Zhao To: akpm@linux-foundation.org Cc: roman.gushchin@linux.dev, hannes@cmpxchg.org, mhocko@kernel.org, shakeelb@google.com, muchun.song@linux.dev, willy@infradead.org, linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, tangyeechou@gmail.com, Yue Zhao Subject: [PATCH v2, 4/4] mm, memcg: Prevent memory.soft_limit_in_bytes load/store tearing Date: Mon, 6 Mar 2023 23:41:38 +0800 Message-Id: <20230306154138.3775-5-findns94@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230306154138.3775-1-findns94@gmail.com> References: <20230306154138.3775-1-findns94@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The knob for cgroup v1 memory controller: memory.soft_limit_in_bytes is not protected by any locking so it can be modified while it is used. This is not an actual problem because races are unlikely. But it is better to use READ_ONCE/WRITE_ONCE to prevent compiler from doing anything funky. The access of memcg->soft_limit is lockless, so it can be concurrently set at the same time as we are trying to read it. Signed-off-by: Yue Zhao Acked-by: Roman Gushchin Acked-by: Shakeel Butt --- mm/memcontrol.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 26605b2f51b1..20566f59bbcb 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3728,7 +3728,7 @@ static u64 mem_cgroup_read_u64(struct cgroup_subsys_s= tate *css, case RES_FAILCNT: return counter->failcnt; case RES_SOFT_LIMIT: - return (u64)memcg->soft_limit * PAGE_SIZE; + return (u64)READ_ONCE(memcg->soft_limit) * PAGE_SIZE; default: BUG(); } @@ -3870,7 +3870,7 @@ static ssize_t mem_cgroup_write(struct kernfs_open_fi= le *of, if (IS_ENABLED(CONFIG_PREEMPT_RT)) { ret =3D -EOPNOTSUPP; } else { - memcg->soft_limit =3D nr_pages; + WRITE_ONCE(memcg->soft_limit, nr_pages); ret =3D 0; } break; --=20 2.17.1