On 02/26, Rafael J. Wysocki wrote:
>
> From: Oleg Nesterov <[EMAIL PROTECTED]>
> 
> refrigerator() can miss a wakeup, "wait event" loop needs a proper memory
> ordering.
> 
> Signed-off-by: Oleg Nesterov <[EMAIL PROTECTED]>
> Signed-off-by: Rafael J. Wysocki <[EMAIL PROTECTED]>
> Acked-by: Pavel Machek <[EMAIL PROTECTED]>
> ---
>  kernel/power/process.c |    6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> Index: linux-2.6.20-mm2/kernel/power/process.c
> ===================================================================
> --- linux-2.6.20-mm2.orig/kernel/power/process.c
> +++ linux-2.6.20-mm2/kernel/power/process.c
> @@ -47,8 +47,10 @@ void refrigerator(void)
>       recalc_sigpending(); /* We sent fake signal, clean it up */
>       spin_unlock_irq(&current->sighand->siglock);
>  
> -     while (frozen(current)) {
> -             current->state = TASK_UNINTERRUPTIBLE;
> +     for (;;) {
> +             set_current_state(TASK_UNINTERRUPTIBLE);
> +             if (!frozen(current))
> +                     break;
>               schedule();
>       }
>       pr_debug("%s left refrigerator\n", current->comm);

This one is already in -mm tree.

Oleg.

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

Reply via email to