Messages in this thread | | | Date | Wed, 1 Sep 2021 06:45:06 -1000 | From | Tejun Heo <> | Subject | Re: [PATCH] kernel/sched: Fix sched_fork() access an invalid sched_task_group |
| |
Hello,
On Wed, Sep 01, 2021 at 03:43:00PM +0800, Zhang Qiao wrote: > 在 2021/9/1 6:59, Tejun Heo 写道: > > On Tue, Aug 31, 2021 at 03:58:42PM +0800, Zhang Qiao wrote: > >>> I think this would allow cgroup migrations to take place before > >>> sched_post_fork() is run, which likely will break stuff. The right > > cgroup migrations? Do you mean child process set its cgroups at > cgroup_subsys->fork()?
As soon as cgroup_post_fork() is complete, userspace can try moving the process to a different cgroup which can get confusing for sched_post_fork.
> > Between cgroup_can_fork() and cgroup_post_fork(), the cgroup membership and > > thus sched_task_group can't change, so if the child sets it to the parent's > > inbetween, the sched_task_group can't go away. > > so the child just need to update its sched_task_group after cgroup_can_fork(), > then call sched_fork(), is it right?
Yeah, the bug here is that a field which is dependent on cgroup membership is being read before the cgroup membership is fixated.
Thanks.
-- tejun
| |