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 4F8A3C3ABD8 for ; Thu, 15 May 2025 00:19:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3E9878D0012; Wed, 14 May 2025 20:19:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 39BFA8D0001; Wed, 14 May 2025 20:19:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 213BC8D0012; Wed, 14 May 2025 20:19:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id EB9948D0001 for ; Wed, 14 May 2025 20:19:50 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id C6137BEC27 for ; Thu, 15 May 2025 00:19:51 +0000 (UTC) X-FDA: 83443234182.10.A4837B4 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) by imf12.hostedemail.com (Postfix) with ESMTP id 0589140004 for ; Thu, 15 May 2025 00:19:49 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=LpdmteeN; spf=pass (imf12.hostedemail.com: domain of inwardvessel@gmail.com designates 209.85.214.178 as permitted sender) smtp.mailfrom=inwardvessel@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=1747268390; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=RoHTrur8vFgYGG4ZwqYr5heeWh0VSEnM0Ly4JM1txjc=; b=FvxGX/uzpGbTnY12gtLi4ogqE0v/javNTCr5UxXXTR+3+ibdyTv0zfA3OUrMGQwj3Y+A+m PUgoX7/lNKjCaxRvcJvgdD3e7aFFYgq2qOHzV6rcHQ0O31Qqb1FfrAJ9UOxnXc5Q9feHsJ ICV0Vzm1JzgcTj1a4LQNRyA/jbcXzF0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747268390; a=rsa-sha256; cv=none; b=vq04pTYk3dIOVkiHn2hF6AERAwdG3KIO8Q4sSdviuesmuKXkbXjuCKJxL6hM7Xx0+hNa42 wzZXdgTVxXL0EMtc2qRVNxBxNkdqkV2O4IjSuQZS/9LzKpjW/uSDZDl+98jcSpAMLc42D4 UXJGfu1o7Vinn66WtUbRjxxzZaHP2MY= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=LpdmteeN; spf=pass (imf12.hostedemail.com: domain of inwardvessel@gmail.com designates 209.85.214.178 as permitted sender) smtp.mailfrom=inwardvessel@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-22c33677183so3362195ad.2 for ; Wed, 14 May 2025 17:19:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747268389; x=1747873189; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RoHTrur8vFgYGG4ZwqYr5heeWh0VSEnM0Ly4JM1txjc=; b=LpdmteeN4SSAdVm+7+hpkMsUARDH6fQA5ScFXFEcFzaosh0W9xsN3aPVlEpaWIisJE FOpNxUZfba4eyjr3Bhq4O521767Jmv39hQ/cThWW7zN47zFscNzSBRF1CDQA/y8WUzic JDtDedcV8HePo/IY51rHiQonAn6yU+O8oJVI+XuRBrnrcZR1ALBynltEhozl2gnBf1y5 6qG487P8E/zrrECioLOxcaIq562dOWZ9L5AAocmGtxk5HST3BY7iHf1gk/JGrfFlNrsn P2FplePwy1LtFCjwIKNK5fQW+/ZIKT1szfw7Gkb+Bn5t++3LK/RoWnA0T1hW7IoZUyI4 qPmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747268389; x=1747873189; h=content-transfer-encoding:mime-version: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=RoHTrur8vFgYGG4ZwqYr5heeWh0VSEnM0Ly4JM1txjc=; b=QVIYbhlEflrof1WDxg2gUkWvGC68CyDn8YsPQnvR2KGJ5uMNMPFTtFvsvTrGARaVpg UGF3cIKBCJoAVTBq4ZCCB0Rll3tZhENN2qKGCzFuiXOMkPpvRSjPsCgKbfeWmU2mPibf mSwqLEA3YdA67C86D5wEMw9dtVqUKbYM0pw0AycxJDZfjS+zbEmzjpkq2BVSDqbepuhB 5sxjY0Fiz5NkZ17KWK+IIayW7CdYqk76bOZKYYUMWorKIdpi1AhWfcdtWIis2gCItuUN FdYQ26oh8mrJEm1aFYteLeOUsPnQrObMoAumsHErQikI5NPPKzG1t4AGBp/SxdK020zZ i9+A== X-Gm-Message-State: AOJu0YyNEjX1/LPkfmPd+yHgrrmmzIaemi5T8tj8s+Brvu/wQJ1/JZWK WrNhetnc2nMxWcGnI3qD8WtQiD3iFFhNkZ8JQfqLHwdeQk1ArKjK X-Gm-Gg: ASbGnct/2XYOwlrBFQVO5oX4q7rE2HGzOdgFGwAn9vW5jLfAW9HO3F1Jks3iSTbqUfB 4xnMUtKCZX+1il5IuKS/U1vwcsfsYvezx68E3h1AmYsPTWM4htPa8NfZ5SGqdA+u2v4IpqAE5iN T7BH7X5IUI5ZayMFZi7OIM23LAgHb3kzsVa4YVJUeVlxS8StVt3D+nRCx4+hcbgydaKz82xYHFl HIMN1ny+gt0zwXcLXImunsfNtfyUohVruM9ewaS0c++wE7vv5PyX5Fapvrz4XJTNPYfsDsUZzrl BH6J9dByIbDwOeV1t0lwnl1ecj4g75VMPD4zAudt5Y6H+CaQydzW+VlCWoURqDSvw+0I7JB1nZx 3+v2hCLTNNmVsj4vX16m8xGFgaxIX5tUbCGGAO2c= X-Google-Smtp-Source: AGHT+IEJR/VRlpD2kJCvyrL2wn90TWebmmOKUCa8C+HTp0tXQdv9ro3m1ilZgBPy8lNMvs+knaGAsw== X-Received: by 2002:a17:903:2a90:b0:223:5a6e:b2c with SMTP id d9443c01a7336-231b5e31349mr7314155ad.17.1747268388862; Wed, 14 May 2025 17:19:48 -0700 (PDT) Received: from jpkobryn-fedora-PF5CFKNC.lan (c-67-188-127-15.hsd1.ca.comcast.net. [67.188.127.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22fc754785bsm105939545ad.20.2025.05.14.17.19.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 May 2025 17:19:48 -0700 (PDT) From: JP Kobryn To: tj@kernel.org, shakeel.butt@linux.dev, yosryahmed@google.com, mkoutny@suse.com, hannes@cmpxchg.org, akpm@linux-foundation.org Cc: linux-mm@kvack.org, cgroups@vger.kernel.org, kernel-team@meta.com Subject: [PATCH v6 1/6] cgroup: warn on rstat usage by early init subsystems Date: Wed, 14 May 2025 17:19:32 -0700 Message-ID: <20250515001937.219505-2-inwardvessel@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250515001937.219505-1-inwardvessel@gmail.com> References: <20250515001937.219505-1-inwardvessel@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 0589140004 X-Stat-Signature: czchk3j34oydy7mbe7mnbqfz1s1c11hz X-Rspam-User: X-HE-Tag: 1747268389-161628 X-HE-Meta: U2FsdGVkX1/Wn0bd3PI/Ceolb646qRoEHk9Vv2oVVMxfkztTm6tjBpy8l65n+mvrNVvV1iU6jsKFyFmcBNOloVuX6vZpxhB5AyK6AzGiZDLXfemMrfyMSCoy4CcQD1Xs2M6MfNVg8LrZFcrksmnLDYxxRr62HSsMtTRjQZjYPO0PbNR3R/TVZNUc2Hz/tqSHqpSZheflhh8Veu5m8Z0lWL9mLHDpElShAWnnaDnr1cDHxha70aQasoM9t3rXHNT8bmsUSOf703CnpzMRwb9c7uc5HPof99XmrDOq6lU0Dvdbd1arsvGaSbvSz3ZSzQuFkBp7lb1qMyOaRzKfahsVxdlNJbnt+MLfYxsdWJ1COLAeqwLeLNyvi2teEgIfRkUEL5GOH/owtsrT9gTpfg963Ltc0WyUDyhOG3v3RV45fJ2VtCrhLr9gsJuEjUF4n0P12nOPZ75jdAc4oWT4lvtDhTHJ2IhBJrcwDQclj52TvllZye2w+f0E7as7bFqovjZDHu/GQDGq6um3aX9f6rPe47TxYme97619d4TxeA3T9lXfrC0FuXansYKZuQpqHJBQiP515iBDHKcuznfMizdApQ5yM7iO80kEVIBpfHy0OR3Y0VQsvUz5sPyK9P3oDbYvLFcAF89G4NIwaDuVJjXUQ0B4lVM0QiAzTpsb2cy4SA0q5kWiD0kBnHn29orB11OHrIEz7FUBUc0uFRaE1rqKpqtyOBlsPdm7YsQqMPD81KvMYX+2+sJXpB6CPTYyN2UxiQo2oWq9pNLGLvMxwtDEszjDagl3dJ2kp8iLmZ1hxqTqjQuHk0UDQsRpa3AjNgelK5OXqOMpxuj0Yble7h1JO61mphLg8tKEOtN7UmF9f/GtKJGSg/gUfrRC1b8f7oaa8/DDHV187Kzyoh5C/CTGl+/Q9mzR6tN/je7AOobb6vWVN9ltbWRW1+5jEoRaLazZI/Q7a13e2JbG4mLaPAA suKsWjCy QW+mdAtCKIquSZeEw6A6nIdPXBqEBVSkXRhC2RnIHEfdBUe6MbNRyjpvI3QdfAiggX75ow7+hyUuxDbtKCQkAgmtJdIb1q2hbM2Fiq5fZYotsgwdmJO3DLoUUV2kj8glAJIvsIc8Uh96iJ9Rj76V7g37/mskquj/V6ccI49YvBn2ARMk5kslG2jBRDRtmPOu9Yh7N/3tbjqSmYVGStGHIZmJu0OmzynU2sMf8heSaHvptqk9HbZQidDlSf7Z5hEi7bQy7/3/0Y+4FZwkKFx7G79NookahBuaoWZlYRIAEHElAJ+NEzOixv/JA/ybN8qoVfg7u0aTFvwHLXp3MdK02J242oNB5OMg2MZflym6pDP8z7IV1a7BY2Gdc6Q== 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: List-Subscribe: List-Unsubscribe: An early init subsystem that attempts to make use of rstat can lead to failures during early boot. The reason for this is the timing in which the css's of the root cgroup have css_online() invoked on them. At the point of this call, there is a stated assumption that a cgroup has "successfully completed all allocations" [0]. An example of a subsystem that relies on the previously mentioned assumption [0] is the memory subsystem. Within its implementation of css_online(), work is queued to asynchronously begin flushing via rstat. In the early init path for a given subsystem, having rstat enabled leads to this sequence: cgroup_init_early() for_each_subsys(ss, ssid) if (ss->early_init) cgroup_init_subsys(ss, true) cgroup_init_subsys(ss, early_init) css = ss->css_alloc(...) init_and_link_css(css, ss, ...) ... online_css(css) online_css(css) ss = css->ss ss->css_online(css) Continuing to use the memory subsystem as an example, the issue with this sequence is that css_rstat_init() has not been called yet. This means there is now a race between the pending async work to flush rstat and the call to css_rstat_init(). So a flush can occur within the given cgroup while the rstat fields are not initialized. Since we are in the early init phase, the rstat fields cannot be initialized because they require per-cpu allocations. So it's not possible to have css_rstat_init() called early enough (before online_css()). This patch treats the combination of early init and rstat the same as as other invalid conditions. [0] Documentation/admin-guide/cgroup-v1/cgroups.rst (section: css_online) Signed-off-by: JP Kobryn --- kernel/cgroup/cgroup.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index 7471811a00de..83b35c22da95 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -6149,6 +6149,8 @@ int __init cgroup_init_early(void) ss->id, ss->name); WARN(strlen(cgroup_subsys_name[i]) > MAX_CGROUP_TYPE_NAMELEN, "cgroup_subsys_name %s too long\n", cgroup_subsys_name[i]); + WARN(ss->early_init && ss->css_rstat_flush, + "cgroup rstat cannot be used with early init subsystem\n"); ss->id = i; ss->name = cgroup_subsys_name[i]; -- 2.47.1