Re: [PATCH] cgroup_freezer: fix freezing groups with stopped tasks

From: Tejun Heo
Date: Mon Nov 21 2011 - 21:21:24 EST


On Tue, Nov 22, 2011 at 10:20:02AM +0800, Li Zefan wrote:
> Tejun Heo wrote:
> > Hello, Michal.
> >
> > On Wed, Nov 16, 2011 at 10:50:34PM +0100, Michal Hocko wrote:
> >> +/* Task is frozen or will freeze immediately when next it gets woken */
> >> +static bool is_task_frozen_enough(struct task_struct *task)
> >> +{
> >> + return frozen(task) ||
> >> + (task_is_stopped_or_traced(task) && freezing(task));
> >> +}
> >
> > Hmmm... w/ pending freezer updates, the above would always return
> > %true if there's freezing in progress, which can't be right. Maybe
>
> Only if the task is stopped/trace.

You're right, missed parantheses.

> If we try to freeze a stopped task, it will be kept in freezing state.
>
> > just test stopped/traced?
>
> This can trigger a BUG_ON in update_if_frozen(), because we always count a
> stopped task as frozen.

So, yeah, the patch looks good to me, but it still isn't difficult to
trigger BUG_ON() there. We need a lot of fixes in cgroup_freezer.

Thanks.

--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/