* Thomas Gleixner <[EMAIL PROTECTED]> wrote:

> +++ linux-2.6.22-rc4/kernel/rtmutex.c 2007-06-08 01:39:38.000000000 +0200
> @@ -189,6 +189,19 @@ int rt_mutex_adjust_prio_chain(struct ta
>       if (!waiter || !waiter->task)
>               goto out_unlock_pi;
>  
> +     /*
> +      * Check the orig_waiter state. After we dropped the locks,
> +      * the previous owner of the lock might have released the lock
> +      * and made us the pending owner:
> +      */
> +     if (orig_waiter && !orig_waiter->task)
> +             goto out_unlock_pi;
> +
> +     /*
> +      * Drop out, when the task has no waiters. Note,
> +      * top_waiter can be NULL, when we are in the deboosting
> +      * mode!
> +      */
>       if (top_waiter && (!task_has_pi_waiters(task) ||
>                          top_waiter != task_top_pi_waiter(task)))
>               goto out_unlock_pi;

nice fix! I'm wondering why we never triggered this case with in-kernel 
locks in -rt?

Acked-by: Ingo Molnar <[EMAIL PROTECTED]>

        Ingo
-
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