Re: [PATCH pm-freezer 1/4] cgroup_freezer: fix freezer->statesetting bug in freezer_change_state()

From: Tejun Heo
Date: Thu Sep 01 2011 - 22:51:21 EST


Hello, Matt.

On Thu, Sep 01, 2011 at 05:42:31PM -0700, Matt Helsley wrote:
> > case CGROUP_FROZEN:
> > - atomic_inc(&system_freezing_cnt);
> > - retval = try_to_freeze_cgroup(cgroup, freezer);
> > + if (freezer->state == CGROUP_THAWED) {
> > + freezer->state = CGROUP_FREEZING;
> > + atomic_inc(&system_freezing_cnt);
> > + retval = try_to_freeze_cgroup(cgroup, freezer);
>
> This still doesn't look quite right. If the cgroup is FREEZING it should
> also call try_to_freeze_cgroup(). I think this is what's needed:
>
> if (freezer->state == CGROUP_THAWED)
> atomic_inc(&system_freezing_cnt);
> freezer->state = CGROUP_FREEZING;
> retval = try_to_freeze_cgroup(cgroup, freezer);

Does this make any difference? Tasks can't migrate if the cgroups are
freezing and freezing state is inherited through forks. But yeah
doing that for both THAWED and FROZEN might still be a good idea for
safety.

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/