Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd1dbcc6 authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

futex: Use futex_top_waiter() in lookup_pi_state()



No point in open coding the same function again.

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarDarren 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: default avatarThomas Gleixner <tglx@linutronix.de>
parent ccf9e6a8
Loading
Loading
Loading
Loading
+61 −63
Original line number Diff line number Diff line
@@ -796,21 +796,20 @@ static int
lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
		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_q *this, *next;
	struct task_struct *p;
	pid_t pid = uval & FUTEX_TID_MASK;

	plist_for_each_entry_safe(this, next, &hb->chain, list) {
		if (match_futex(&this->key, key)) {
	if (match) {
		/*
			 * Sanity check the waiter before increasing
			 * the refcount and attaching to it.
		 * Sanity check the waiter before increasing the
		 * refcount and attaching to it.
		 */
			pi_state = this->pi_state;
		pi_state = match->pi_state;
		/*
			 * Userspace might have messed up non-PI and
			 * PI futexes [3]
		 * Userspace might have messed up non-PI and PI
		 * futexes [3]
		 */
		if (unlikely(!pi_state))
			return -EINVAL;
@@ -877,7 +876,6 @@ lookup_pi_state(u32 uval, struct futex_hash_bucket *hb,
		*ps = pi_state;
		return 0;
	}
	}

	/*
	 * We are the first waiter - try to look up the real owner and attach