cgroup/cpuset: Add cpuset_can_fork() and cpuset_cancel_fork() methods
authorWaiman Long <longman@redhat.com>
Tue, 11 Apr 2023 13:35:59 +0000 (09:35 -0400)
committerTejun Heo <tj@kernel.org>
Wed, 12 Apr 2023 18:23:58 +0000 (08:23 -1000)
commiteee87853794187f6adbe19533ed79c8b44b36a91
tree326dbfa685987b930fa1bcf0ac0e01f2e1e4b92f
parent42a11bf5c5436e91b040aeb04063be1710bb9f9c
cgroup/cpuset: Add cpuset_can_fork() and cpuset_cancel_fork() methods

In the case of CLONE_INTO_CGROUP, not all cpusets are ready to accept
new tasks. It is too late to check that in cpuset_fork(). So we need
to add the cpuset_can_fork() and cpuset_cancel_fork() methods to
pre-check it before we can allow attachment to a different cpuset.

We also need to set the attach_in_progress flag to alert other code
that a new task is going to be added to the cpuset.

Fixes: ef2c41cf38a7 ("clone3: allow spawning processes into cgroups")
Suggested-by: Michal Koutný <mkoutny@suse.com>
Signed-off-by: Waiman Long <longman@redhat.com>
Cc: stable@vger.kernel.org # v5.7+
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/cgroup/cpuset.c