|
@@ -190,8 +190,9 @@ static void freezer_fork(struct cgroup_subsys *ss, struct task_struct *task)
|
|
freezer = task_freezer(task);
|
|
freezer = task_freezer(task);
|
|
task_unlock(task);
|
|
task_unlock(task);
|
|
|
|
|
|
- BUG_ON(freezer->state == CGROUP_FROZEN);
|
|
|
|
spin_lock_irq(&freezer->lock);
|
|
spin_lock_irq(&freezer->lock);
|
|
|
|
+ BUG_ON(freezer->state == CGROUP_FROZEN);
|
|
|
|
+
|
|
/* Locking avoids race with FREEZING -> THAWED transitions. */
|
|
/* Locking avoids race with FREEZING -> THAWED transitions. */
|
|
if (freezer->state == CGROUP_FREEZING)
|
|
if (freezer->state == CGROUP_FREEZING)
|
|
freeze_task(task, true);
|
|
freeze_task(task, true);
|