X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=kernel%2Ffutex.c;h=5a270b5e3f95de173e44194cd7e5b3d511ec6ff8;hb=e0f2e3a06be513352cb4955313ed7e55909acd84;hp=e749e7df14b1a598c201f61b4d9b5bf8fb7c3d97;hpb=a22a0fab32e1216df56e4b9a577dc5c922cf7524;p=powerpc.git diff --git a/kernel/futex.c b/kernel/futex.c index e749e7df14..5a270b5e3f 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -565,6 +565,7 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_q *this) if (!pi_state) return -EINVAL; + spin_lock(&pi_state->pi_mutex.wait_lock); new_owner = rt_mutex_next_owner(&pi_state->pi_mutex); /* @@ -604,6 +605,7 @@ static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_q *this) pi_state->owner = new_owner; spin_unlock_irq(&new_owner->pi_lock); + spin_unlock(&pi_state->pi_mutex.wait_lock); rt_mutex_unlock(&pi_state->pi_mutex); return 0;