Re: [PATCH v2] cgroup/cpuset: Don't access cpuset_cgrp_subsys.root in is_in_v2_mode()

From: Waiman Long

Date: Wed Sep 30 2026 - 18:31:18 EST


On 9/30/26 1:57 PM, Michal Koutný wrote:
On Tue, Sep 29, 2026 at 11:18:33PM -0400, Waiman Long <longman@xxxxxxxxxx> wrote:
After seeing the patch [1] to guard is_in_v2_mode() with RCU, it makes
me realize that is_in_v2_mode() may be called in a context where a new
cgroup filesystem is being rebound with stale cpuset_cgrp_subsys.root
pointer.
add: which is a privileged operation.

Avoid this potential UaF situation by adding a new cpuset_v2_mode
flag which is set when the cpuset_v2_mode mount option is used. This
flag is written into only when cpuset_bind() is being called with a
stable cpuset_cgrp_subsys.root value. The is_in_v2_mode() helper is
modified to read the new cpuset_v2_mode flag instead of accessing
cpuset_cgrp_subsys.root directly.
You write about "potential" situation. But are there any such callers
(after the cpuset_v2() conversion in cpuset_num_cpus())?

Other than the cpuset_num_cpus(), is_in_v2_mode() should only be used with either cpuset_mutex or callback_lock held. Rebinding a cgroup subsystem is protected by holding cgroup_mutex. I am not aware of any situation where rebinding is happening while cpuset code is being called into, but I can't rule out that possibility. Also it is possible that future cpuset code extension may make it possible that this race condition can happen. For safety, it is better to make the code safe. That is the reason why I said it is a potential situation.



Fixes: b8d1b8ee93df ("cpuset: Allow v2 behavior in v1 cgroup")
I'd even consider (pruning to)
Fixes: d23b5c5777158 ("cgroup: Make operations on the cgroup root_list RCU safe")

(Admittedly, is_in_v2_mode() wasn't always called under cgroup_mutex, but
I'd argue (without comprehensive analysis) that predicate's callers were
synchronized via cpuset_mutex in cpuset_bind() (and cgroup_mutex)
anyways.)

The caching you proposed looks safe. (I'm mainly writing because of the
commit message wrt UaF.)

I said UaF because it is what Andrea patch is implying. As I said before, I don't think that can happen, but I can't rule it out.

Cheers,
Longman


Michal