futex: Use futex_top_waiter() in lookup_pi_state()
No point in open coding the same function again. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Darren Hart <darren@dvhart.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Davidlohr Bueso <davidlohr@hp.com> Cc: Kees Cook <kees@outflux.net> Cc: wad@chromium.org Link: http://lkml.kernel.org/r/20140611204237.092947239@linutronix.de Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
ccf9e6a80d
commit
bd1dbcc67c
|
@ -796,21 +796,20 @@ static int
|
||||||
lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
|
lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
|
||||||
union futex_key *key, struct futex_pi_state **ps)
|
union futex_key *key, struct futex_pi_state **ps)
|
||||||
{
|
{
|
||||||
|
struct futex_q *match = futex_top_waiter(hb, key);
|
||||||
struct futex_pi_state *pi_state = NULL;
|
struct futex_pi_state *pi_state = NULL;
|
||||||
struct futex_q *this, *next;
|
|
||||||
struct task_struct *p;
|
struct task_struct *p;
|
||||||
pid_t pid = uval & FUTEX_TID_MASK;
|
pid_t pid = uval & FUTEX_TID_MASK;
|
||||||
|
|
||||||
plist_for_each_entry_safe(this, next, &hb->chain, list) {
|
if (match) {
|
||||||
if (match_futex(&this->key, key)) {
|
|
||||||
/*
|
/*
|
||||||
* Sanity check the waiter before increasing
|
* Sanity check the waiter before increasing the
|
||||||
* the refcount and attaching to it.
|
* refcount and attaching to it.
|
||||||
*/
|
*/
|
||||||
pi_state = this->pi_state;
|
pi_state = match->pi_state;
|
||||||
/*
|
/*
|
||||||
* Userspace might have messed up non-PI and
|
* Userspace might have messed up non-PI and PI
|
||||||
* PI futexes [3]
|
* futexes [3]
|
||||||
*/
|
*/
|
||||||
if (unlikely(!pi_state))
|
if (unlikely(!pi_state))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -877,7 +876,6 @@ lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
|
||||||
*ps = pi_state;
|
*ps = pi_state;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We are the first waiter - try to look up the real owner and attach
|
* We are the first waiter - try to look up the real owner and attach
|
||||||
|
|
Loading…
Reference in New Issue