Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp2970980ybk; Mon, 18 May 2020 12:25:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzxqb2pabx9Dr92Rb1kpARoOoKJA7UZkIBhjQQjzIhadF1HcHvbIRC9TKf7/hzA2QyFvSqZ X-Received: by 2002:a50:ee15:: with SMTP id g21mr14504766eds.170.1589829959151; Mon, 18 May 2020 12:25:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589829959; cv=none; d=google.com; s=arc-20160816; b=j8zKMxMFZ/3ksNSTTlBComVsQQ5YT0915Hl20nUgjX2+dlfpRoiFUhD9PkJaIOAwyn GHgjIqQc6Y9U8X/455vWRgoYZ88ZcAYbnmT4usWR/Roo4TaVVRzZtp//p8QrhezqOWVy JoknKmvyocY8PKNDC/zR4mzt1f2KF2wWLkRm2qc/rMvnALl9k9etY+ZsnDB5nGNc2uC4 uXwIZmy6Re+WZ11jL58lHSZQ5Yr9gHXtSxkw4Tqo1M7VFm8aisNTEdu3hloaEvuug6Ga 3SK4EaOg3YXUYsqhyglNHz+o4jYGCnOtW3cSgVh43+kqfNEBMZ+Xkt0lDrvjgz3X6dIt p13g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=1iDBL2ZQDCTwzJXh9JDdUchJ9vs6XGWn0L58cP4yyeQ=; b=oC8qocqqwhUfrQXCazzl+Ek+mHrjrIzdtf1/Dy0Za+1Msra97Yp3ALtlxungwkd0+F ayM5J1MPLD8lf9rBhmIj5CxQGiHs+yQBWyUw+LQKinGcUhYm7lLgYej4/YptKQn0aRdq TFKYz5oScpT5MY3aDKNvsh7FhVzBynYPAOCVte9w0rVuOI+JkgAySQBJurcOMnFp4afn QDsHs6qcesMDgLjJPSkMN0SsMFLuV54U+xUier6r8DnMAPPsE0gPTLOWyyGXh3hL4/mK Rfixs+exGz7LNbwfmc2/KCWwvTACNwVj8MKk0NCzv4iJHo5C5DM3uZ5UlhWrtI06JAns aJow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Ikd1JI3Z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x13si6884435ejb.364.2020.05.18.12.25.33; Mon, 18 May 2020 12:25:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Ikd1JI3Z; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731240AbgERR5S (ORCPT + 99 others); Mon, 18 May 2020 13:57:18 -0400 Received: from mail.kernel.org ([198.145.29.99]:35670 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731755AbgERR5Q (ORCPT ); Mon, 18 May 2020 13:57:16 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 435E620715; Mon, 18 May 2020 17:57:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1589824634; bh=Je6FXSInJLYZf+/pTUnJ/qAOarZaMmrEhM75kIpLwPk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ikd1JI3Z4al1YDYK5N6p0Y4eMU5agmD9rmZIR3CmQfphWINHLhrEj7KejAOaLejtL Fo5sSJfikd4+h0hCGr8Pfmlh4KaKIgxBrU5vbfrBK8nvkb1WBi57XNLja/vhjNnCo/ kKxHCH0Y4MpbeKCHNzUK54NQGRepyQJMBfe48yU0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Randy Dunlap , Yafang Shao , Andrew Morton , Shakeel Butt , Johannes Weiner , Chris Down , Michal Hocko , Linus Torvalds , Sasha Levin Subject: [PATCH 5.4 091/147] mm, memcg: fix inconsistent oom event behavior Date: Mon, 18 May 2020 19:36:54 +0200 Message-Id: <20200518173524.885853433@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200518173513.009514388@linuxfoundation.org> References: <20200518173513.009514388@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yafang Shao [ Upstream commit 04fd61a4e01028210a91f0efc408c8bc61a3018c ] A recent commit 9852ae3fe529 ("mm, memcg: consider subtrees in memory.events") changed the behavior of memcg events, which will now consider subtrees in memory.events. But oom_kill event is a special one as it is used in both cgroup1 and cgroup2. In cgroup1, it is displayed in memory.oom_control. The file memory.oom_control is in both root memcg and non root memcg, that is different with memory.event as it only in non-root memcg. That commit is okay for cgroup2, but it is not okay for cgroup1 as it will cause inconsistent behavior between root memcg and non-root memcg. Here's an example on why this behavior is inconsistent in cgroup1. root memcg / memcg foo / memcg bar Suppose there's an oom_kill in memcg bar, then the oon_kill will be root memcg : memory.oom_control(oom_kill) 0 / memcg foo : memory.oom_control(oom_kill) 1 / memcg bar : memory.oom_control(oom_kill) 1 For the non-root memcg, its memory.oom_control(oom_kill) includes its descendants' oom_kill, but for root memcg, it doesn't include its descendants' oom_kill. That means, memory.oom_control(oom_kill) has different meanings in different memcgs. That is inconsistent. Then the user has to know whether the memcg is root or not. If we can't fully support it in cgroup1, for example by adding memory.events.local into cgroup1 as well, then let's don't touch its original behavior. Fixes: 9852ae3fe529 ("mm, memcg: consider subtrees in memory.events") Reported-by: Randy Dunlap Signed-off-by: Yafang Shao Signed-off-by: Andrew Morton Reviewed-by: Shakeel Butt Acked-by: Johannes Weiner Acked-by: Chris Down Acked-by: Michal Hocko Cc: Link: http://lkml.kernel.org/r/20200502141055.7378-1-laoar.shao@gmail.com Signed-off-by: Linus Torvalds Signed-off-by: Sasha Levin --- include/linux/memcontrol.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 8faca7b525438..fb5b2a41bd456 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -793,6 +793,8 @@ static inline void memcg_memory_event(struct mem_cgroup *memcg, atomic_long_inc(&memcg->memory_events[event]); cgroup_file_notify(&memcg->events_file); + if (!cgroup_subsys_on_dfl(memory_cgrp_subsys)) + break; if (cgrp_dfl_root.flags & CGRP_ROOT_MEMORY_LOCAL_EVENTS) break; } while ((memcg = parent_mem_cgroup(memcg)) && -- 2.20.1