On Tue, Sep 29, 2026 at 11:18:33PM -0400, Waiman Long 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())? > 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.) Michal