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 CFCB0C64EC4 for ; Mon, 6 Mar 2023 15:42:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6C6FA6B007E; Mon, 6 Mar 2023 10:42:24 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 676A4280001; Mon, 6 Mar 2023 10:42:24 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 53F556B0081; Mon, 6 Mar 2023 10:42:24 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 4780C6B007E for ; Mon, 6 Mar 2023 10:42:24 -0500 (EST) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 2020FA06E0 for ; Mon, 6 Mar 2023 15:42:24 +0000 (UTC) X-FDA: 80538890208.04.A4F763D Received: from mail-qt1-f173.google.com (mail-qt1-f173.google.com [209.85.160.173]) by imf01.hostedemail.com (Postfix) with ESMTP id 466A340015 for ; Mon, 6 Mar 2023 15:42:22 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=MQT4Hnfv; spf=pass (imf01.hostedemail.com: domain of findns94@gmail.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=findns94@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678117342; 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=kK+Z862YESi30yZiQZC0bVwPclz8DCYbgAA/NRofcVQ=; b=EXt/D1tXjg0RehrGJEUnyG1xuf6BI8eJqFBPkwnHiYlyBzW62CiQk69FR72929Bh3ZV93u HweaGjxzM2FmsTWT0I16pUotG6CR0vFYS5QjWU/pMnVoUKz4kou6VY+o5CHjId05Mo2vDg +g368jsyRQTKdq44D2ZrTi3P2/ZW8fo= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=MQT4Hnfv; spf=pass (imf01.hostedemail.com: domain of findns94@gmail.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=findns94@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678117342; a=rsa-sha256; cv=none; b=07o7xg8YGQxm12wkN+pXdmu1IQ2y5MBDuP15LvfDpt8fkM2sbnzYL3FgsDQOSXJfJVhlIU pHkEk+pNP4lFGrkT8IgqFHLzpu8eNKy3q6SmX1PgkDyfSuzkoYrLIl0g4P20qm1z4hkTIN 7IytkL8Wa8OeENMj/7HGSpIo2fE2EsE= Received: by mail-qt1-f173.google.com with SMTP id c18so10958058qte.5 for ; 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=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=m/LWGQDgI0KlFL6os2UNEDTQ0q7QDMWc0oZ5OsiQaftrWn4J6pQcUquWRp5BJBQqJg P/xdeYKUzFfVv5y2n+oEy24NEc4TuDRLPJrWrfW/2RAbg9EarYAqlI7NATi1PYBFrWGM R6TC55nrsUUAR5+Z84uEzmc96TzhyU/3qD8xIt3LwLW+DCh/50B15rfUX9t58qNVVB+t YHE4p4IzppgURASSNfcSh6D0YTpd8gwPO3fSFuHKLIthUcPHZKzBatfMUkZgOvYazmWC 9/4deBkpRF8xCJce/Kv1sYZMltD1Nk7nc9bkNVHYuLuvgdZDmPv86QMcO2w0td9iQnkg jPrA== X-Gm-Message-State: AO0yUKXzJQNxr4NKOfUn7XTBFtkc4YZkOJcNFFaChRnlEw9aOuEZ/Y/e RZe3g4DaQMoK7BD33DW4uhY= 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> X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: xkykmgkzir7gq4qubnofxsn3i5gr348p X-Rspamd-Queue-Id: 466A340015 X-HE-Tag: 1678117342-663268 X-HE-Meta: U2FsdGVkX1+VbGsQPRhVuU+TyXDmapoQdjoA5z4kx5gTRmTAlQ9RBIO/kT32pd2QCmwxhp7mPiljI2DCVoglbpGHmV+BdLHXTq1+tR3wqQRVkcHN5jOQTiXTUBDi+XUoOfZnAJ7LSQt3EEOxJubukwhc05KKmS6hE/87Wsi6IzsYznQA/bHbnUq169WGE9vEqQLuhzevZ06LQS9QlNmCReToJq4ETmitElCv42jSiCR/RO51AsOYlWMg8+0chDJX62FoU5cRuX6qwlfx479hnyOwqqzKQnoix39TZk6jQXUtESc6JTHLqXm0ECC+n8L+dtF24Co9uaM+VfJf9zdPi904IRwFVpWmwRIO+pRHEOzaWqapC1nNTqWEp9/KUuSsg9lRskxQAu2XvrDjmkdACXQq+nP2rLHyQzLRDvzRoh+qwFTFudAuht39A7zhMcjrb7MpmWxVloOtCGT+8aB6vaE/0E2rY5qrMJwxtvQje5FRxiSvbi0KMe135U8Tqlwltpjh3ZsDSBCAwEFpuEMHhlPYti4BUVins3NHHgDJlD+XfsR3FyThm/xGrl5W18Q8UWLbJPyIpFStc2dIwcBXSZWxuDYoW9KQSnInvXH5mmuvwqGnqp1WAM8UV6cvw02FYJOgTABVLTTo1QzUa3e4BLChVN7AqQmSbm5w3KEP53Enp8FvmxunMefQyk7xFDGRZSD4MNBrN6HHa4XWVIGfS+r8JWepfPEeCdvE4QVyu/E0iUHy8NjPN4lJ1Fb+4vWwMAkLRoWGEAvRypD+7FV1VgztVS1Wa+RqqfCRhr1ek2UDZcFsPfAUori2iNmUT0i7da1Fu5bcOzueClowNAFtMnkgmSQ8y+2/uWkEPvDSQ3X8VSReBChhwvbH7PqPgNqrRqKh8LgQQTvQpNFKPuprciv83328A9IgIctszpAL5UQddmt0oSVjNjRjDHYbSk9D/3JB1jSK6JRAUKkMuch J07NJU/O G4ZTW8IXjxEbeQn5NAQZ3ZPDjK8Uzd0cFPxl3Ycf8/mIZUJI3fFKMhjTG1EtUiUAmxyYKWi2OtuSBqTvTJq6LcgbzAioz6feAae9d/2arr8Q4KflqA73GFDvOgxoSISv1QCo8s6NtyZlO6MaIqSW6pTzKpVZSfoHa4/eRQtNB9mbuBjrgCpcwl//u3on6SBhniAixU/nsMR1jM87alORfHJl0nWlun1fKRdaFr2mBw+UqkSjImTMnJeVxCHIldHnp7LTlY66Y7RMLSxW+DezscOpvm71Xux2ImfJTcOVQu1dLHX2OxgHCI/oIeen1knI7KqpihaVbSO6V8ThM5XwNQlCwU9Ay5H1gYAnCwWvUFqTJKV6XD5N24o1ABT1u2BZ2+1IaK5CQAZVhI+XKHuwy5B/URlT9VqVyl7tlCa7/0unCPanF65R4F2Dpg2zSQK8P5mzMhZeQmtQEAuDtmm3BzS2/LQ== 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.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 --- 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_state *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_file *of, if (IS_ENABLED(CONFIG_PREEMPT_RT)) { ret = -EOPNOTSUPP; } else { - memcg->soft_limit = nr_pages; + WRITE_ONCE(memcg->soft_limit, nr_pages); ret = 0; } break; -- 2.17.1