mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
[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: Ingo Molnar <mingo@elte.hu> Cc: Ulrich Drepper <drepper@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
a99e4e413e
commit
ed6f7b10e6
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user