Skip to content

Commit

Permalink
futex: Remove needless goto's
Browse files Browse the repository at this point in the history
As stated in the coding style documentation, "if there is no cleanup
needed then just return directly", instead of jumping to a label and
then returning.

Remove such goto's and replace with a return statement.  When there's a
ternary operator on the return value, replace it with the result of the
operation when it is logically possible to determine it by the control
flow.

Signed-off-by: André Almeida <andrealmeid@collabora.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/20200702202843.520764-3-andrealmeid@collabora.com
  • Loading branch information
andrealmeid authored and KAGA-KOKO committed Jul 17, 2020
1 parent 9180bd4 commit d7c5ed7
Showing 1 changed file with 16 additions and 24 deletions.
40 changes: 16 additions & 24 deletions kernel/futex.c
Original file line number Diff line number Diff line change
Expand Up @@ -1607,13 +1607,13 @@ futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)

ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &key, FUTEX_READ);
if (unlikely(ret != 0))
goto out;
return ret;

hb = hash_futex(&key);

/* Make sure we really have tasks to wakeup */
if (!hb_waiters_pending(hb))
goto out;
return ret;

spin_lock(&hb->lock);

Expand All @@ -1636,7 +1636,6 @@ futex_wake(u32 __user *uaddr, unsigned int flags, int nr_wake, u32 bitset)

spin_unlock(&hb->lock);
wake_up_q(&wake_q);
out:
return ret;
}

Expand Down Expand Up @@ -1703,10 +1702,10 @@ futex_wake_op(u32 __user *uaddr1, unsigned int flags, u32 __user *uaddr2,
retry:
ret = get_futex_key(uaddr1, flags & FLAGS_SHARED, &key1, FUTEX_READ);
if (unlikely(ret != 0))
goto out;
return ret;
ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, FUTEX_WRITE);
if (unlikely(ret != 0))
goto out;
return ret;

hb1 = hash_futex(&key1);
hb2 = hash_futex(&key2);
Expand All @@ -1724,13 +1723,13 @@ futex_wake_op(u32 __user *uaddr1, unsigned int flags, u32 __user *uaddr2,
* an MMU, but we might get them from range checking
*/
ret = op_ret;
goto out;
return ret;
}

if (op_ret == -EFAULT) {
ret = fault_in_user_writeable(uaddr2);
if (ret)
goto out;
return ret;
}

if (!(flags & FLAGS_SHARED)) {
Expand Down Expand Up @@ -1773,7 +1772,6 @@ futex_wake_op(u32 __user *uaddr1, unsigned int flags, u32 __user *uaddr2,
out_unlock:
double_unlock_hb(hb1, hb2);
wake_up_q(&wake_q);
out:
return ret;
}

Expand Down Expand Up @@ -1980,20 +1978,18 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags,
retry:
ret = get_futex_key(uaddr1, flags & FLAGS_SHARED, &key1, FUTEX_READ);
if (unlikely(ret != 0))
goto out;
return ret;
ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2,
requeue_pi ? FUTEX_WRITE : FUTEX_READ);
if (unlikely(ret != 0))
goto out;
return ret;

/*
* The check above which compares uaddrs is not sufficient for
* shared futexes. We need to compare the keys:
*/
if (requeue_pi && match_futex(&key1, &key2)) {
ret = -EINVAL;
goto out;
}
if (requeue_pi && match_futex(&key1, &key2))
return -EINVAL;

hb1 = hash_futex(&key1);
hb2 = hash_futex(&key2);
Expand All @@ -2013,7 +2009,7 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags,

ret = get_user(curval, uaddr1);
if (ret)
goto out;
return ret;

if (!(flags & FLAGS_SHARED))
goto retry_private;
Expand Down Expand Up @@ -2079,7 +2075,7 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags,
ret = fault_in_user_writeable(uaddr2);
if (!ret)
goto retry;
goto out;
return ret;
case -EBUSY:
case -EAGAIN:
/*
Expand Down Expand Up @@ -2198,8 +2194,6 @@ static int futex_requeue(u32 __user *uaddr1, unsigned int flags,
double_unlock_hb(hb1, hb2);
wake_up_q(&wake_q);
hb_waiters_dec(hb2);

out:
return ret ? ret : task_count;
}

Expand Down Expand Up @@ -2545,7 +2539,7 @@ static int fixup_owner(u32 __user *uaddr, struct futex_q *q, int locked)
*/
if (q->pi_state->owner != current)
ret = fixup_pi_state_owner(uaddr, q, current);
goto out;
return ret ? ret : locked;
}

/*
Expand All @@ -2558,7 +2552,7 @@ static int fixup_owner(u32 __user *uaddr, struct futex_q *q, int locked)
*/
if (q->pi_state->owner == current) {
ret = fixup_pi_state_owner(uaddr, q, NULL);
goto out;
return ret;
}

/*
Expand All @@ -2572,8 +2566,7 @@ static int fixup_owner(u32 __user *uaddr, struct futex_q *q, int locked)
q->pi_state->owner);
}

out:
return ret ? ret : locked;
return ret;
}

/**
Expand Down Expand Up @@ -2670,7 +2663,7 @@ static int futex_wait_setup(u32 __user *uaddr, u32 val, unsigned int flags,

ret = get_user(uval, uaddr);
if (ret)
goto out;
return ret;

if (!(flags & FLAGS_SHARED))
goto retry_private;
Expand All @@ -2683,7 +2676,6 @@ static int futex_wait_setup(u32 __user *uaddr, u32 val, unsigned int flags,
ret = -EWOULDBLOCK;
}

out:
return ret;
}

Expand Down

0 comments on commit d7c5ed7

Please sign in to comment.