Commit ed6f7b10 authored by Ingo Molnar's avatar Ingo Molnar Committed by Linus Torvalds

[PATCH] pi-futex: futex_wake() lockup fix

Fix futex_wake() exit condition bug when handling the robust-list with PI
futexes on them.

(reported by Ulrich Drepper, debugged by the lock validator.)
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Cc: Ulrich Drepper <drepper@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent a99e4e41
...@@ -630,8 +630,10 @@ static int futex_wake(u32 __user *uaddr, int nr_wake) ...@@ -630,8 +630,10 @@ static int futex_wake(u32 __user *uaddr, int nr_wake)
list_for_each_entry_safe(this, next, head, list) { list_for_each_entry_safe(this, next, head, list) {
if (match_futex (&this->key, &key)) { if (match_futex (&this->key, &key)) {
if (this->pi_state) if (this->pi_state) {
return -EINVAL; ret = -EINVAL;
break;
}
wake_futex(this); wake_futex(this);
if (++ret >= nr_wake) if (++ret >= nr_wake)
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment