--- kernel/futex.c.old 2008-11-24 15:03:30.000000000 +0300 +++ kernel/futex.c 2008-11-24 15:04:45.000000000 +0300 @@ -481,7 +481,7 @@ lookup_pi_state(u32 uval, struct futex_h WARN_ON(!atomic_read(&pi_state->refcount)); WARN_ON(pid && pi_state->owner && - pi_state->owner->pid != pid); + virt_pid(pi_state->owner) != pid); atomic_inc(&pi_state->refcount); me->pi_state = pi_state; @@ -1047,7 +1047,7 @@ static void unqueue_me_pi(struct futex_q static int fixup_pi_state_owner(u32 *uaddr, struct futex_q *q, struct task_struct *newowner) { - u32 newtid = newowner->pid | FUTEX_WAITERS; + u32 newtid = virt_pid(newowner) | FUTEX_WAITERS; struct futex_pi_state *pi_state = q->pi_state; u32 uval, curval, newval; int ret;