Commit dc7109aa authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Ingo Molnar
Browse files

futex: Validate waiter correctly in futex_proxy_trylock_atomic()

The loop in futex_requeue() has a sanity check for the waiter, which is
missing in futex_proxy_trylock_atomic(). In theory the key2 check is
sufficient, but futexes are cursed so add it for completeness and paranoia

Signed-off-by: default avatarThomas Gleixner <>
Signed-off-by: default avatarPeter Zijlstra (Intel) <>
Signed-off-by: default avatarIngo Molnar <>
parent c49f7ece
......@@ -1879,6 +1879,13 @@ futex_proxy_trylock_atomic(u32 __user *pifutex, struct futex_hash_bucket *hb1,
if (!top_waiter)
return 0;
* Ensure that this is a waiter sitting in futex_wait_requeue_pi()
* and waiting on the 'waitqueue' futex which is always !PI.
if (!top_waiter->rt_waiter || top_waiter->pi_state)
ret = -EINVAL;
/* Ensure we requeue to the expected futex. */
if (!match_futex(top_waiter->requeue_pi_key, key2))
return -EINVAL;
Supports Markdown
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