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 1C649C61DA4 for ; Mon, 6 Mar 2023 15:42:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6A0216B0078; Mon, 6 Mar 2023 10:42:12 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 64F8A6B007B; Mon, 6 Mar 2023 10:42:12 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 517A56B007D; Mon, 6 Mar 2023 10:42:12 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 439A76B0078 for ; Mon, 6 Mar 2023 10:42:12 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id ECF45AAC90 for ; Mon, 6 Mar 2023 15:42:11 +0000 (UTC) X-FDA: 80538889662.09.BB78655 Received: from mail-qv1-f50.google.com (mail-qv1-f50.google.com [209.85.219.50]) by imf17.hostedemail.com (Postfix) with ESMTP id 339CA40012 for ; Mon, 6 Mar 2023 15:42:09 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="HI57W0h/"; spf=pass (imf17.hostedemail.com: domain of findns94@gmail.com designates 209.85.219.50 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=1678117330; 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=9pBtlfX3iX0mnIfMkXEb8DAWvw6xGcJJJjqlGD9DGtU=; b=HY99C6DpOJZ32iETx5D0JHYOAnchbw5vOLn7NtdQ44qCm1qqbquyA2Haq2dOnLvC9VgvkP KIar+dZbOYZPHVgu4GdZi7iDc53yvM6lViFKd1dmwnd1rFNeAiWXtPfJ51BDyZKzLJIHxB z2/buJPlGxCj42VN+o/GcafdCdTGleE= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="HI57W0h/"; spf=pass (imf17.hostedemail.com: domain of findns94@gmail.com designates 209.85.219.50 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=1678117330; a=rsa-sha256; cv=none; b=KJVbswdswwfuiY9QFL0JwaI83q+LfFpG2NeoImBBodT7tjM/QIRTVDxhpOysuq5ir1GkTn lITulZGlGnJEIFchOwOqgRjDdcclkRrfp1i0rVEiYR5GcTagoTzDJdN8znD2hyVxncEXvr 5WiWLYz8raLstN18SZ3wy7jZCAe6t4M= Received: by mail-qv1-f50.google.com with SMTP id ne1so6872400qvb.9 for ; Mon, 06 Mar 2023 07:42:09 -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=jYzwEy07aS5JXPpkrkd8N/5lVlv+iuAZjfTYkc7jAQNKlk+RwllnbiIcczhJ2zhhV6 jbddpcF06rQ1SMVxVAAwlJU0kPsgmqyntV+rS1KNTci6klFFgFgTR338DN1lKc0ubtOI CtcTSVzr/gwKuGJ7a7aINw1Ozvr0lYQC2ckfUMjdq3naoJNiqF6lP0UGOCWooupPrchB f8jyMEWhMF/q5riq6UEK3e2L+NzaHT6hWgHkgtpcDqpPpe3O47YGTa4dbSG6CjbtWDcB iu7tKK1pNwEIpSev483HTyflG1x4MUFcm2j1V9LJUZaT9eY1MzDNfRCt+co/nRbRBUJv 4/vw== X-Gm-Message-State: AO0yUKU3JrL3/bxukna+6AwBQuAjd3LxxvJDsqtrIyDSZEFkcM2XUkgF 2QvGy5Kcncc6doQm0uIOZgY= 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> X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 339CA40012 X-Rspam-User: X-Stat-Signature: efdonp6pqkdg4jufaasjwsz4oi5aq7sm X-HE-Tag: 1678117329-137402 X-HE-Meta: U2FsdGVkX1+kIcM09d8mWZfzhgduBAbjDBzsDOh2AbXQrdmWjMDm8IOXUHrOhbyU3hyuohU6VfCw+Sxf6oZu+Fyq4Cz72ZcmQ5LM3RVCqNb99JCKSq+VT0km/3FahNWnrpwHYtWuGjFv2GzHEFLjaiMQl+XoRgyq6bkRishtae0eAXvLLmLN7msjrET7t3qECEbnpRQVzddqwPJsZpkeIonS1t4Y/Bm3a1HRwJl9r4/9jzZHsfDkEQaeH4kNcrEMPmLY9lYMSQMWjzxIKiQfRGWHTNWvPze/AL9/fiF6lDR0NvoVUbKYfvGUGhWhg3a/tMUTzdBWy/ivkRI6Lx/xxOeL41fBT33y/YNcSiQoJkQB2gzDpvRAtDoG1DlOUcEdBokmKOawugGv0Pz4aVP+RekL50D8RuOXYjiCR8dXyONTzfxw/9vaKFr8O+cdUwg1N9tO5Bsqem1iRmZuGL36cyBk4OBBBuNxjwZHZ7gXYP8C+5WF6SgdAcK2XsHnlrperE9HHpGjRobi6EgatqlYK86JopXATFdeuwClDeY0s/y5b9tx+OfKaC6DwcgdHLs6QHrfQCWGCrSRd+s6Hel9ksdGy8DTIGOegj4MRKd6q6uqPu8bT4NKHBXKQND8ONnDgA/ascFM1k1uqVhyqURg0n2+eWHtj9zKmnI51JWycEhkf9NaHAHgaisOHwDGSqjN64hyGVgBK3bbH6DrAQYHeodQWgYng7CZTQ9OXAv1wqfkWIg0NRltFW/SNwqcxrO1kJskeHalmQePZqZh/Sj/doauxCadCqz4F6LqNVw9dwI1cGDcsWGASCEwOLbmrEGTDZERwA7EaVBUcSngUuiG0t57yd/hr3JHx3OZZ2zAQ5HPv9GKr00zX5RSoC2XgikT8iXMN/h6ukalA3RQdOQByo9dJPQ8P3B8Hz9mozAQsutAF1iG9Bhu3dxY2vejpgabjuyIvquJTOBgSfB/UUF VFSjkAsM sGhpj4E0KozyRe1ijTewmljJVABFcoEer5Gq1POX4tm8FP4bLzq6vFyH9a9nMos4AR2VHIEfP2Tk4vA8HxBJWmedeV1g8u5b1Xl+IgLrSVBrlOtWx1xJ0826nhCqbiRJeEAPN82U7LIdaw0gSohkALELlvTluhM58R18XmEDLzcXuenZRtGZUsoMwpltWFB5S5rqqEtif72stBDbk6D9Cy1ws8NwjI4GCrbnhLcwrOJprhSGjJciVNgz6hqpOmugZf++6sFzteOT9VxFQcDTIJUU7Up8o2etG6+/QXPffdsBiuqnB2vzcYjx6zxWkhTmYwkJJ40QFLK/4u4sXCg8NnZ7eBErVaTfc12uVwbvDiUDfA3RsNHoILwwco0vqvnl+YoYdHjIFSX8+X6dFhx9Ugc82V6H0PPSHlAbHZPY/9pCzP5s= 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 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 --- 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 task_struct *victim, * highest-level memory cgroup with oom.group set. */ for (; memcg; memcg = parent_mem_cgroup(memcg)) { - if (memcg->oom_group) + if (READ_ONCE(memcg->oom_group)) oom_group = memcg; if (memcg == oom_domain) @@ -6623,7 +6623,7 @@ static int memory_oom_group_show(struct seq_file *m, void *v) { struct mem_cgroup *memcg = mem_cgroup_from_seq(m); - seq_printf(m, "%d\n", memcg->oom_group); + seq_printf(m, "%d\n", READ_ONCE(memcg->oom_group)); return 0; } @@ -6645,7 +6645,7 @@ static ssize_t memory_oom_group_write(struct kernfs_open_file *of, if (oom_group != 0 && oom_group != 1) return -EINVAL; - memcg->oom_group = oom_group; + WRITE_ONCE(memcg->oom_group, oom_group); return nbytes; } -- 2.17.1