All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ridong Chen <ridong.chen@linux.dev>
To: Hui Peng <benquike@gmail.com>,
	Guopeng Zhang <guopeng.zhang@linux.dev>,
	Tejun Heo <tj@kernel.org>, Johannes Weiner <hannes@cmpxchg.org>,
	Waiman Long <longman@redhat.com>
Cc: Michal Koutny <mkoutny@suse.com>, Shuah Khan <shuah@kernel.org>,
	cgroups@vger.kernel.org, linux-kselftest@vger.kernel.org,
	linux-kernel@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH v3 1/3] cgroup/cpuset: return PERR_NOCPUS in remote_partition_enable()
Date: Mon, 21 Sep 2026 15:08:55 +0800	[thread overview]
Message-ID: <a00dbaaa-99f1-4172-b337-911ff45ae71e@linux.dev> (raw)
In-Reply-To: <20260920181449.3122336-1-benquike@gmail.com>



On 9/21/2026 2:14 AM, Hui Peng wrote:
> Commit 6da580ec656a ("cgroup/cpuset: Don't allow creation of local
> partition over a remote one") updated update_prstate() to prevent creating
> a top-level local partition whose exclusive CPUs conflict with an existing
> remote partition.
> 
> However, if a top-level local partition A1 is created on CPUs 1-3, has a
> non-partition member child A1/A2 with cpuset.cpus.exclusive = 1-3, and a
> grandchild A1/A2/A3 is then enabled as a partition root on 1-3,
> update_prstate() sees !is_partition_valid(parent) (since A1/A2 is a member)
> and calls remote_partition_enable(). Because remote_partition_enable() does
> not check whether tmp->new_cpus intersects subpartitions_cpus, A1/A2/A3 is
> enabled as a remote partition on CPUs already owned by A1, triggering:
> 
>    WARNING: kernel/cgroup/cpuset.c:1594 at update_prstate+0xbef/0xd70
> 
> Return PERR_NOCPUS in remote_partition_enable() when tmp->new_cpus
> intersects subpartitions_cpus, matching the error code used by
> remote_cpus_update() for subpartitions_cpus conflicts, and add a
> corresponding regression test case to
> tools/testing/selftests/cgroup/test_cpuset_prs.sh.
> 
> Tested in QEMU on Linux 7.3.0-rc3 using
> tools/testing/selftests/cgroup/test_cpuset_prs.sh.
> 
> Fixes: 6da580ec656a ("cgroup/cpuset: Don't allow creation of local partition over a remote one")
> Suggested-by: Guopeng Zhang <guopeng.zhang@linux.dev>
> Cc: stable@vger.kernel.org
> Assisted-by: LLM
> Signed-off-by: Hui Peng <benquike@gmail.com>
> ---
> Changes in v3:
> - Split the series into 3 patches (one per logical change and Fixes: tag).
> 

What is going on here?

Please do not reply with a new series. And I think the changes should be listed 
in the cover letter. Otherwise, it will get very confusing.


>   kernel/cgroup/cpuset.c                        | 4 +++-
>   tools/testing/selftests/cgroup/test_cpuset_prs.sh | 2 ++
>   2 files changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
> index c8ab89cfbe3d..7381fa8502e7 100644
> --- a/kernel/cgroup/cpuset.c
> +++ b/kernel/cgroup/cpuset.c
> @@ -1678,8 +1678,10 @@ static int remote_partition_enable(struct cpuset *cs, int new_prs,
>   	 * Callers must have validated that effective_xcpus is not empty.
>   	 */
>   	spin_lock_irq(&callback_lock);
> -	if (cpumask_subset(top_cpuset.effective_cpus, tmp->new_cpus)) {
> +	if (cpumask_intersects(tmp->new_cpus, subpartitions_cpus) ||
> +	    cpumask_subset(top_cpuset.effective_cpus, tmp->new_cpus)) {
>   		spin_unlock_irq(&callback_lock);
> +		if (cpumask_intersects(tmp->new_cpus, subpartitions_cpus))
> +			return PERR_NOCPUS;
>   		return PERR_HKEEPING;
>   	}
>   

I cannot apply this patch. It seems quite different from v2.

> diff --git a/tools/testing/selftests/cgroup/test_cpuset_prs.sh b/tools/testing/selftests/cgroup/test_cpuset_prs.sh
> index a1f42ef64bc1..b732078bf319 100755
> --- a/tools/testing/selftests/cgroup/test_cpuset_prs.sh
> +++ b/tools/testing/selftests/cgroup/test_cpuset_prs.sh
> @@ -298,6 +298,8 @@ TEST_MATRIX=(
>   	" C0-4:X2-4 C1-4:X2-4:P2 C2-4:X4:P1 \
>   				   .      .      .      X1      .    0 A1:0-1|A2:2-4|A3:2-4 \
>   								       A1:P0|A2:P2|A3:P-1 2-4"
> +	" CX1-3:P1 CX1-3  CX1-3    .      .      .      P1     .     0 A1:1-3|A2:1-3|A3:1-3 \
> +								       A1:P1|A2:P0|A3:P-1"
>   
>   	# Remote partition offline tests
>   	"   C0-3    C1-3  C2-3     .    X2-3   X2-3 X2-3:P2:O2=0 .   0 A1:0-1|A2:1|A3:3 A1:P0|A3:P2 2-3"

-- 
Best regards
Ridong


  parent reply	other threads:[~2026-09-21  7:09 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-19 22:17 [PATCH] cgroup/cpuset: prevent overlapping local and remote partition creation Hui Peng
2026-09-20  1:22 ` Ridong Chen
2026-09-20  3:04   ` Hui Peng
2026-09-20  8:23   ` [PATCH v2 1/2] cgroup/cpuset: return PERR_NOCPUS in remote_partition_enable() on subpartitions_cpus conflict Hui Peng
2026-09-20  8:23     ` [PATCH v2 2/2] cgroup/cpuset: prevent local partition activation over remote partition and sibling xcpus conflict Hui Peng
2026-09-20  8:57       ` Guopeng Zhang
2026-09-20 18:14         ` [PATCH v3 1/3] cgroup/cpuset: return PERR_NOCPUS in remote_partition_enable() Hui Peng
2026-09-20 18:14           ` [PATCH v3 2/3] cgroup/cpuset: prevent activating local partition over remote one Hui Peng
2026-09-22 20:21             ` Waiman Long
2026-09-20 18:14           ` [PATCH v3 3/3] cgroup/cpuset: check sibling effective_xcpus in cpus_excl_conflict() Hui Peng
2026-09-21  7:08           ` Ridong Chen [this message]
2026-09-22  8:00             ` [PATCH v3 1/3] cgroup/cpuset: return PERR_NOCPUS in remote_partition_enable() Hui Peng
2026-09-22 20:04               ` Waiman Long
2026-09-20 18:14         ` [PATCH v2 2/2] cgroup/cpuset: prevent local partition activation over remote partition and sibling xcpus conflict Hui Peng
2026-09-20  6:30 ` [PATCH] cgroup/cpuset: prevent overlapping local and remote partition creation Guopeng Zhang
2026-09-20  8:23   ` Hui Peng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a00dbaaa-99f1-4172-b337-911ff45ae71e@linux.dev \
    --to=ridong.chen@linux.dev \
    --cc=benquike@gmail.com \
    --cc=cgroups@vger.kernel.org \
    --cc=guopeng.zhang@linux.dev \
    --cc=hannes@cmpxchg.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=longman@redhat.com \
    --cc=mkoutny@suse.com \
    --cc=shuah@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.