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 B4EFDC61DA4 for ; Mon, 6 Mar 2023 15:42:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4094E6B007D; Mon, 6 Mar 2023 10:42:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3B7516B007E; Mon, 6 Mar 2023 10:42:20 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 27FCD280001; Mon, 6 Mar 2023 10:42:20 -0500 (EST) 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 1BF776B007D for ; Mon, 6 Mar 2023 10:42:20 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id E5B0F1605C4 for ; Mon, 6 Mar 2023 15:42:19 +0000 (UTC) X-FDA: 80538889998.22.319610F Received: from mail-qt1-f173.google.com (mail-qt1-f173.google.com [209.85.160.173]) by imf26.hostedemail.com (Postfix) with ESMTP id 3A8A9140025 for ; Mon, 6 Mar 2023 15:42:18 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=SktXouP2; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf26.hostedemail.com: domain of findns94@gmail.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=findns94@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678117338; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=Pu8gC0LE8S+gTMZ95T5G8zWPtdy0mtS5OOYges0wR78=; b=cC5dWKe1ho5GL3jP4XNThZKQb2a9r3rk9+NP2d2/VExgUVDibVYUvT1vRgAlr4PHdSXk64 hR7cOH1OXIRRNpFjc+DMCYz2P0ZvwtxngHAkb+YKWpO5cIE7SFvezsL3atcfvWz6F+yLFS CYpcMzXjdfayPHhWz2uwQJ3D8t/5HrQ= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=SktXouP2; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf26.hostedemail.com: domain of findns94@gmail.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=findns94@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678117338; a=rsa-sha256; cv=none; b=YWuZ77x0XuS1yHFuIsVOge88uWLEvBq4wE5m+8u7uVEvSsK/7zgcdAw/t90WrXCwXgvx5q Dkzwh39K/QoeIMo7g/jb4YoKDq0KYMVy7M9XfG80Eh5zde7UZYcuEOdem7ctdVQ4b5VEMf 9X0mRc3nimY8IXgi1MGSY9Y07NJK6YQ= Received: by mail-qt1-f173.google.com with SMTP id l13so10976583qtv.3 for ; Mon, 06 Mar 2023 07:42:17 -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=wAfmAr5IJ/K91O+GPOd4Y1P/XrLvErD5hprhc26BDxcDwHiGGqONQtyWi22Z/+s9oL iD4recLP6w7YgV6k2+20q/V2EG/x/urpjyID8IDn1zu4wtwfEZgZp7GLeC+Gr/TOKezJ h4wTunyp2Mz/bEMMatxXvYXwJIzfpm1FB1LRxpdAfEFhlrR8USLJcCC8tEcEi0jmECLF urW5HMmCootCKqXO2mVReD3a/VL4RpQDKNnKLm3r3ThONgc+CNEY+HGXMkG5s+7YBIGa NH+hJzn3bV/I+4Tr5/2a9pO7OXuGQfECJ8eyIrpS2WaAn8M91ST9rzxCRqCR5kyym5aA rXoA== X-Gm-Message-State: AO0yUKUVTuExaWogiKZYQiF7OtYGufsogRpaqdvSnun9lfsw9WAZ4YAH KLvU4ipcoFxJ9LVoYQNm0EY= 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> X-Rspamd-Queue-Id: 3A8A9140025 X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: wekbt3rxztrcyc4rrmwxmj6ersex9xiq X-HE-Tag: 1678117338-299432 X-HE-Meta: U2FsdGVkX191hkiiM/TwvKr1yDTSzhFOe66k4cy2TwcLg1C3YAB+zE3ELAfOzmkvh22zAJtdtG8QqfgzotNZiOqvuOgA8wk2JA6rAYvs+WbFr0JlsgGqmdv2GeQgLZn1JYJe+viRDyrfCGuQItayXi5QdRqIAofDnRdOu0qcx0HAJV/D5imVZsIFxjWO5FTFXsHHVbqIhLhg5x3G6ItBEit3hcnlBKDgOygQYFHXls1JEUzmmUJ0xKBBC1gxfSg0SW6NhSKBmtd6rI2uglYVAPMJyh3c3FoXdHb4AZqlXmawFgCyKk+s+RFXKXL/W8ot5w9jKxPEmci1WTNKmpU6/WYsTmfZ2YurDtZ46TPx8+bsBnYtNPd1edu0OUFvpBtFYrMfaXWUUmVMx6vMZTnM1NNNkFNlXuO8EsXm5NUDb+sV/1ekXyoVCvD+/M6dTqtxMi9ae0hYEpagnQgozBRck72HEGELA+Wk70/VtBxe94R9Y6P66NEehM+cBD//V8vrlPyIwfGgm5Yu3m47hRj21mdC3wljkLOCp18/I+wXWTAPgEjUkcpjjQvKnBuNscxw3LvKu0XRKn8bQZqukGWgrDHtgGY6UHbIYLKiMxsF8vXIh4W41pG+0X24SzUAS4O00szTDFCgyIa4cwOP0CqOdrNikibo5OvUFO8x1UUYN5VRsppdGxBAyifhxGDIOLTSMKKmZtT29hieJyZSgk2b/r/80zE4hWPME3IJ3SdZ0bDNtHGTY4sEQX7b+6jEwhq6J0sSClfkxoAvZLzmxm4G6YLnR6guOhi1mumQSJyZ4aLDNOQwlKXUi/rbOq1rnGv2dafbAhaB/flFNTHj6CvzVe4nTQHSt6pVbmMNg0N/+JCazp8dFIG5A7hSjI7vYrgNmuYapP0NOephne9CMSHd+Q5Votoy4NtGM8p5Z7UYvXj9VPddV6oTVM2Ut1Ve8gjGf1cVGPCYKD68+jXzijo sOoLYHtA Y4Nm3nJHWlHHKNPeIr0+mg8B0EL3IpcHuyzcsgD/TVBS7kMJGzd5iE2CdGoLrOlfG+BnVTkLcACcUOdNIZPUhiQfE5tHDtOc2WeRUQzAM8sGlUKZyrUo1BS3MCHdKlpwPuQ+dpSQsSdH1hE20uNfyKk06gX8QifpdvLBEPQ0D/EQjyJzZg8guQ1uqhhSBTzMpW2CDfFAdgPxnflGKD2OSOWko/Y3QMUtSeMpdxGCum6pQ7bcP0CC/8sa+NjSlo2I5O0hkI8NW8noYoEq+XlGFp03DuCZSAtYzlA8Zl6DJyXgnTUkQ7QdxMiEgS83fpN8/pmVGr7cauPbY+YwUtojH3OlGNhttr+Geph1GlG79f99tBeLrOWhoEDsic2eM66lgJt2MQ/48b/H2DVaHIzB2HKKznKVi0MtW8ndjvhcUb+4mRdQzG22YoAPCgqQRIJLSc2IZ19DZJg85Ur4fCz2W4nHhDw== 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: 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 --- 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_file *sf, void *v) { struct mem_cgroup *memcg = mem_cgroup_from_seq(sf); - 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 == 0) || (val == 1))) return -EINVAL; - memcg->oom_kill_disable = val; + WRITE_ONCE(memcg->oom_kill_disable, val); if (!val) memcg_oom_recover(memcg); -- 2.17.1