On 11/30, Roman Gushchin wrote:
>
> +void cgroup_enter_frozen(void)
> +{
> +     if (!current->frozen) {
> +             struct cgroup *cgrp;
> +
> +             spin_lock_irq(&css_set_lock);
> +             current->frozen = true;
> +             cgrp = task_dfl_cgroup(current);
> +             cgrp->freezer.nr_frozen_tasks++;
> +             WARN_ON_ONCE(cgrp->freezer.nr_frozen_tasks >
> +                          cgrp->freezer.nr_tasks_to_freeze);
> +             cgroup_update_frozen(cgrp, true);
> +             spin_unlock_irq(&css_set_lock);
> +     }
> +
> +     __set_current_state(TASK_INTERRUPTIBLE);
> +     schedule();
> +     __set_current_state(TASK_RUNNING);

forgot to mention, schedule() always returns in TASK_RUNNING, so the 2nd
__set_current_state() is pointless.

Oleg.

Reply via email to