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 EA5EFC369C2 for ; Tue, 22 Apr 2025 04:31:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 107F46B0007; Tue, 22 Apr 2025 00:31:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0B4E16B0008; Tue, 22 Apr 2025 00:31:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EBEF36B000A; Tue, 22 Apr 2025 00:31:08 -0400 (EDT) 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 CD7816B0007 for ; Tue, 22 Apr 2025 00:31:08 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id CEA6C120321 for ; Tue, 22 Apr 2025 04:31:10 +0000 (UTC) X-FDA: 83360405100.11.32BDEB5 Received: from mail-qv1-f45.google.com (mail-qv1-f45.google.com [209.85.219.45]) by imf29.hostedemail.com (Postfix) with ESMTP id 0469112000A for ; Tue, 22 Apr 2025 04:31:08 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=gourry.net header.s=google header.b=g8P8TOO5; dmarc=none; spf=pass (imf29.hostedemail.com: domain of gourry@gourry.net designates 209.85.219.45 as permitted sender) smtp.mailfrom=gourry@gourry.net ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745296269; a=rsa-sha256; cv=none; b=lCtaH3UpAREEE+5sUVfk8YmpJbI9E3xjUqzqquLPpeTb+MCKN7Zos3qOmJZtLs2mxEIrlc p8RdbKpm0onpI52QNHNCkdhWbjKqeBs9tRFZ4+1GbGsCA9sgMVBhuxUcKpRi2W8HGCbEy8 11xZDiBbrh0a4Fd4Pg1Se1QPYxCgNAo= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=gourry.net header.s=google header.b=g8P8TOO5; dmarc=none; spf=pass (imf29.hostedemail.com: domain of gourry@gourry.net designates 209.85.219.45 as permitted sender) smtp.mailfrom=gourry@gourry.net ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745296269; 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=PRSMksXpsf52yOD4IubO1aFNXvg4s4nX378ktXQqSPw=; b=n4UPHyyYfzPwYVwEuhrdVKOhRre4wppvKjoM7uW12UOUKAW6RmgJR5wMQP6ou258vz+pjg CgUo8vtPcjJcwD8prIkOjm7nxS4VXfh1sZfmmfWKhL1dgGo8T9x+MSE+voOZSNKf0Advql Pxso42Bs9ibXhROZ6p2Swga4bGcRMwg= Received: by mail-qv1-f45.google.com with SMTP id 6a1803df08f44-6e8f254b875so48316576d6.1 for ; Mon, 21 Apr 2025 21:31:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gourry.net; s=google; t=1745296267; x=1745901067; 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=PRSMksXpsf52yOD4IubO1aFNXvg4s4nX378ktXQqSPw=; b=g8P8TOO5zaJcgVcRgmw45mlx40kER9LWqJSrdaoeNLqKP3+nAhW4CEklv+e3FFWAVl 4/cVRyNqUOdVFFi3LiDqi4ENrVJQi2CVoCG0lGrK1Ez+IX/TkPSj7AW9ZBZ5XiA+NcBD gB35NF2v3p2r6mDLSC/89d1kmh282yzsK/cRiYUSDEXXVmqXTIUYm2ymoWoVKX0egGl4 Mm9UMN0I5CJP6iLSHtVu2AQsKDblhpYu0bGziVfzBD+6CwsNCLQ5gMqhiPLPhG2NGIT9 8rS/9JK0tJ1JHP0SmLSiTGe0AcHQPHCCux0iuhEDrS7UAQEE+OmGhmSvbt38NuiVDEAI T3bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745296267; x=1745901067; 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=PRSMksXpsf52yOD4IubO1aFNXvg4s4nX378ktXQqSPw=; b=lWf265uoZD7+GLiR4qiTwVpmxvxfFE9IoNcyZr7iLu9PaxmKu1v6I5HytTlNfrgBhj FOhDrM6iC8wHWseJaNv5RbTLrwJA6yHFGVhE4U1V0wPwo7zgEG+btyDivT/p1g20Wg+7 v7IOmoKx5o0M2dilH/kHSEgrglwXeQ6RqiyzQdOP8E1nZEjEKz28YNGCCqW7YKsypAqr H+6adpQWDCGQYV4ixbVQRH/niNS8aG+Ta2L/xz36wu+Hm0bnpDD1NDpYrtAlLdXY9xBp k+J8wzwn92dD0fSd4hLWVvHUjEVxkyB5pAxM+NQJqu7JFh0cN93mSAb0J+fUorfpFY6k UfNA== X-Gm-Message-State: AOJu0YxvnsRTirPtp3GF6mvKR/oqppdmydBK7B5gyHW/8NgKKS8tygBQ d4iarq4zabBm0vgPuIOco89J4JBT+aBnvrUbT5pHW5hZBz1QAtnOFLy1gstsVP2dOj7HZJ3BVDw N X-Gm-Gg: ASbGnctxRsmRI1eMnRmZ+yZVyD4qwe4bwxAlN5KCOVBr1b1M09n4CJ9OE9X56kEOABO gM7sy504NFl7RIIqKGybchAMtVuZ6RFMHPIvgvH0dV4H85kaXgNov3cmU+5VB/RtDLzXmrMPWDg r+mxTahW8VV/KQIL0bmmigoxXJVLkQAuVtZQnbD7AWt/F96m0FgHL2ljGMLaLUICNPQfSKstj8p 5Y9iaBFU/0Mf0iU2Z9ir2f1bdnrbn1MiOmF1owO6sRsSThcmxs+e1KlSksngtFlVcJCkqaZJkNr PtSlb4LVW9WzYmVTqunP/wAgBgoaBcH4mKz76r6SjEjwHhu61s4AdNTCKWTTSwfQBl4uW66LK/r KxkjFiuSRjxFCUONelDkRjNhj51iI X-Google-Smtp-Source: AGHT+IEzQ3PXHur4luJ4jcRF7GRw/fek8cyUhcS6YWFUPEnKas0lDo2Hf0ec4S5N4vxVbonxlQQHOw== X-Received: by 2002:a05:6214:29c1:b0:6e6:6599:edf6 with SMTP id 6a1803df08f44-6f2c4655ae9mr267147396d6.34.1745296267519; Mon, 21 Apr 2025 21:31:07 -0700 (PDT) Received: from gourry-fedora-PF4VCD3F.lan (pool-173-79-56-208.washdc.fios.verizon.net. [173.79.56.208]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6f2c2af14easm52745336d6.3.2025.04.21.21.31.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 21:31:07 -0700 (PDT) From: Gregory Price To: linux-mm@kvack.org Cc: cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-team@meta.com, longman@redhat.com, hannes@cmpxchg.org, mhocko@kernel.org, roman.gushchin@linux.dev, shakeel.butt@linux.dev, muchun.song@linux.dev, tj@kernel.org, mkoutny@suse.com, akpm@linux-foundation.org Subject: [PATCH] cpuset: relax locking on cpuset_node_allowed Date: Tue, 22 Apr 2025 00:30:55 -0400 Message-ID: <20250422043055.1932434-1-gourry@gourry.net> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250422012616.1883287-3-gourry@gourry.net> References: <20250422012616.1883287-3-gourry@gourry.net> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 0469112000A X-Stat-Signature: jwhwsyrw83okhzdu9crtdfedyz53g176 X-Rspam-User: X-HE-Tag: 1745296268-230290 X-HE-Meta: U2FsdGVkX1++Mrh+ckQeYUVbzyqDaBB4+co2Hid+7nZOw6oeH0/1QR1GKFGDpUPNpe6gLsO4ddvxVqfG80KcGqMDqO6qsfSom9TGjQCm1a4D8s+V3/lNp9xn+v9FG1LtLDfocbeyoaEmdedgn5hChRX7K0w+C32dyetEOw66Thhe3yHgKBBsGEfkDPaA7iEbDfNKQWzERCdFYAf54i6+g9DF4VoovhRjh74I958VDk7rk0+ignWPw/nwA32l3PUT/DxIrhZem1TQgcGxuEfjsAlWZS9nlx7Sd+q/XLlhRzUwVenwiQ+gySYEbwmjMnEhDjLUBOAQ7RduLbvrHijcH8FkryDO4uw+jr/8PHlQ/xXOOAZNfjbqC0cRoH9eIbw5JlZzg3PR4f44jm+CX5YRLmbm/j3Au41RVm84YUv6YH/bm1VA6+HbvELzarANsiDRWo5LaNDG6yLj6JQq3ATACL3ysw9f+Q+pGm3rGBi8tPCdOZZf2GNuYikNY4k2j3FsPIOiyYlC62xhvGlF7fyQ68FQhXlrnmVeklHx9Be1i7VtK7TMnqIv1OLT+XYGFapWJg1LoEw2JOQru9lIG+UoieuLQnVPVgWIpE/HE53ZP+wx64mvis0JkYTyYf6MY9qoH3VlyitUwvCALXp354uStHcpGDiMhnJw5Fn3ho3EAudooQTYTGLBnqcTNoruCzUX58U7t1ygc/W/gx1sUKCFHweCrVPj9NdpyPOYP7wf9HdRjJkIjPGRUxJe2Zu3iqVi7l2zJ7WOHxvdG6LeKWFHt6snbryK+u0bo9RzY0tWEOZL6HdttUVlSAR5g7vWOJTKIZOpLL9fOeMTqDzzN5Y9XlpMC+UjPekpYR563rnJzgCTXjfbfmcx40uefJUzR9BMlO6GZpqcAliGZZDgfn8Tgko/LZMpNVedNYGvRo2Ps68YvyTUzKZch8D5KZWiFsOuISbAA2MFDYrFu7Z+el7 DBtliCjM yN77vTRIRBrPybcsxeLHCRGL647wJ9FeTE+Zkkd3+B62jksBkRkiJp+LeKqY/30UF6KwPPHjyURi2hhAhacXcOro3hUckE3m7vBf8IxB6PkGeiwzOTe9DNm9XDjOd0DCkOjwiD15gO7XIHLOQssTQOIIKokzxUc1ZLfBFjBagptHjUEdWUyWguBu4jItTqjR8HiLuQaaKZ2DLWTE7DoOi+hWO5t46wTacX0E95v/Ubr5nqSvalNXCAZHQGKRQNVoHP3wnNVClz16YEKG8WZQNVwIlRhSCcgJvCzQWNgSHT/mhNomDA0I0F12siiyUUsLwtmT+KQahQiOuZbpJaOezf42uILSzbseju4cddOtjQ85TTLv8Hy9yhzMG9g== 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: The cgroup_get_e_css reference protects the css->effective_mems, and calls of this interface would be subject to the same race conditions associated with a non-atomic access to cs->effective_mems. So while this interface cannot make strong guarantees of correctness, it can therefore avoid taking a global or rcu_read_lock for performance. Drop the rcu_read_lock from cpuset_node_allowed. Suggested-by: Shakeel Butt Suggested-by: Waiman Long Signed-off-by: Gregory Price --- kernel/cgroup/cpuset.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c index c52348bfd5db..1dc41758c62c 100644 --- a/kernel/cgroup/cpuset.c +++ b/kernel/cgroup/cpuset.c @@ -4181,10 +4181,20 @@ bool cpuset_node_allowed(struct cgroup *cgroup, int nid) if (!css) return true; + /* + * Normally, accessing effective_mems would require the cpuset_mutex + * or RCU read lock - but node_isset is atomic and the reference + * taken via cgroup_get_e_css is sufficient to protect css. + * + * Since this interface is intended for use by migration paths, we + * relax locking here to avoid taking global locks - while accepting + * there may be rare scenarios where the result may be innaccurate. + * + * Reclaim and migration are subject to these same race conditions, and + * cannot make strong isolation guarantees, so this is acceptable. + */ cs = container_of(css, struct cpuset, css); - rcu_read_lock(); allowed = node_isset(nid, cs->effective_mems); - rcu_read_unlock(); css_put(css); return allowed; } -- 2.49.0