On Tue, Jan 31, 2023 at 10:48:03AM -0500, Waiman Long wrote:
It was found that the check to see if a partition could use up all the cpus from the parent cpuset in update_parent_subparts_cpumask() was incorrect. As a result, it is possible to leave parent with no effective cpu left even if there are tasks in the parent cpuset. This can lead to system panic as reported in [1].
Fix this probem by updating the check to fail the enabling the partition if parent's effective_cpus is a subset of the child's cpus_allowed.
Also record the error code when an error happens in update_prstate() and add a test case where parent partition and child have the same cpu list and parent has task. Enabling partition in the child will fail in this case.
[1] https://www.spinics.net/lists/cgroups/msg36254.html
Fixes: f0af1bfc27b5 ("cgroup/cpuset: Relax constraints to partition & cpus changes") Reported-by: Srinivas Pandruvada srinivas.pandruvada@intel.com Signed-off-by: Waiman Long longman@redhat.com
Applied to cgroup/for-6.2-fixes w/ stable cc added.
Thanks.