On Wed, Mar 22, 2017 at 11:35:48AM +0100, Peter Zijlstra wrote:
> futex_top_waiter() returns the top-waiter on the pi_mutex. Assinging
> this to a variable 'match' totally obscures the code.
> 
> Signed-off-by: Peter Zijlstra (Intel) <[email protected]>

Yup, still happy to see this one.

Reviewed-by: Darren Hart (VMware) <[email protected]>

> ---
>  kernel/futex.c |   30 +++++++++++++++---------------
>  1 file changed, 15 insertions(+), 15 deletions(-)
> 
> --- a/kernel/futex.c
> +++ b/kernel/futex.c
> @@ -1120,14 +1120,14 @@ static int attach_to_pi_owner(u32 uval,
>  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_q *top_waiter = futex_top_waiter(hb, key);
>  
>       /*
>        * If there is a waiter on that futex, validate it and
>        * attach to the pi_state when the validation succeeds.
>        */
> -     if (match)
> -             return attach_to_pi_state(uval, match->pi_state, ps);
> +     if (top_waiter)
> +             return attach_to_pi_state(uval, top_waiter->pi_state, ps);
>  
>       /*
>        * We are the first waiter - try to look up the owner based on
> @@ -1174,7 +1174,7 @@ static int futex_lock_pi_atomic(u32 __us
>                               struct task_struct *task, int set_waiters)
>  {
>       u32 uval, newval, vpid = task_pid_vnr(task);
> -     struct futex_q *match;
> +     struct futex_q *top_waiter;
>       int ret;
>  
>       /*
> @@ -1200,9 +1200,9 @@ static int futex_lock_pi_atomic(u32 __us
>        * Lookup existing state first. If it exists, try to attach to
>        * its pi_state.
>        */
> -     match = futex_top_waiter(hb, key);
> -     if (match)
> -             return attach_to_pi_state(uval, match->pi_state, ps);
> +     top_waiter = futex_top_waiter(hb, key);
> +     if (top_waiter)
> +             return attach_to_pi_state(uval, top_waiter->pi_state, ps);
>  
>       /*
>        * No waiter and user TID is 0. We are here because the
> @@ -1292,11 +1292,11 @@ static void mark_wake_futex(struct wake_
>       q->lock_ptr = NULL;
>  }
>  
> -static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_q *this,
> +static int wake_futex_pi(u32 __user *uaddr, u32 uval, struct futex_q 
> *top_waiter,
>                        struct futex_hash_bucket *hb)
>  {
>       struct task_struct *new_owner;
> -     struct futex_pi_state *pi_state = this->pi_state;
> +     struct futex_pi_state *pi_state = top_waiter->pi_state;
>       u32 uninitialized_var(curval), newval;
>       DEFINE_WAKE_Q(wake_q);
>       bool deboost;
> @@ -1317,11 +1317,11 @@ static int wake_futex_pi(u32 __user *uad
>  
>       /*
>        * It is possible that the next waiter (the one that brought
> -      * this owner to the kernel) timed out and is no longer
> +      * top_waiter owner to the kernel) timed out and is no longer
>        * waiting on the lock.
>        */
>       if (!new_owner)
> -             new_owner = this->task;
> +             new_owner = top_waiter->task;
>  
>       /*
>        * We pass it to the next owner. The WAITERS bit is always
> @@ -2631,7 +2631,7 @@ static int futex_unlock_pi(u32 __user *u
>       u32 uninitialized_var(curval), uval, vpid = task_pid_vnr(current);
>       union futex_key key = FUTEX_KEY_INIT;
>       struct futex_hash_bucket *hb;
> -     struct futex_q *match;
> +     struct futex_q *top_waiter;
>       int ret;
>  
>  retry:
> @@ -2655,9 +2655,9 @@ static int futex_unlock_pi(u32 __user *u
>        * all and we at least want to know if user space fiddled
>        * with the futex value instead of blindly unlocking.
>        */
> -     match = futex_top_waiter(hb, &key);
> -     if (match) {
> -             ret = wake_futex_pi(uaddr, uval, match, hb);
> +     top_waiter = futex_top_waiter(hb, &key);
> +     if (top_waiter) {
> +             ret = wake_futex_pi(uaddr, uval, top_waiter, hb);
>               /*
>                * In case of success wake_futex_pi dropped the hash
>                * bucket lock.
> 
> 
> 

-- 
Darren Hart
VMware Open Source Technology Center

Reply via email to