Commit aa016b08 authored by Ingo Molnar's avatar Ingo Molnar Committed by Jeff Garzik

[PATCH] futex-fix-2.5.39-A1

This fixes one more race left in the new futex hashing code, which
triggers if a futex waiter gets a signal after it has been woken up but
before it actually wakes up.
parent 6e21ad7b
...@@ -151,13 +151,13 @@ static void futex_vcache_callback(vcache_t *vcache, struct page *new_page) ...@@ -151,13 +151,13 @@ static void futex_vcache_callback(vcache_t *vcache, struct page *new_page)
struct futex_q *q = container_of(vcache, struct futex_q, vcache); struct futex_q *q = container_of(vcache, struct futex_q, vcache);
struct list_head *head = hash_futex(new_page, q->offset); struct list_head *head = hash_futex(new_page, q->offset);
BUG_ON(list_empty(&q->list));
spin_lock(&futex_lock); spin_lock(&futex_lock);
if (!list_empty(&q->list)) {
q->page = new_page; q->page = new_page;
list_del_init(&q->list); list_del(&q->list);
list_add_tail(&q->list, head); list_add_tail(&q->list, head);
}
spin_unlock(&futex_lock); spin_unlock(&futex_lock);
} }
......
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