tcp: Remove unnecessary conditions in inet_csk_bind_conflict().
When we get an ephemeral port, the relax is false, so the SO_REUSEADDR conditions may be evaluated twice. We do not need to check the conditions again. Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
af91fd7e17
commit
16f6c2518f
|
@ -146,17 +146,15 @@ static int inet_csk_bind_conflict(const struct sock *sk,
|
||||||
(!sk->sk_bound_dev_if ||
|
(!sk->sk_bound_dev_if ||
|
||||||
!sk2->sk_bound_dev_if ||
|
!sk2->sk_bound_dev_if ||
|
||||||
sk->sk_bound_dev_if == sk2->sk_bound_dev_if)) {
|
sk->sk_bound_dev_if == sk2->sk_bound_dev_if)) {
|
||||||
if ((!reuse || !sk2->sk_reuse ||
|
if (reuse && sk2->sk_reuse &&
|
||||||
sk2->sk_state == TCP_LISTEN) &&
|
sk2->sk_state != TCP_LISTEN) {
|
||||||
(!reuseport || !sk2->sk_reuseport ||
|
if (!relax &&
|
||||||
|
inet_rcv_saddr_equal(sk, sk2, true))
|
||||||
|
break;
|
||||||
|
} else if (!reuseport || !sk2->sk_reuseport ||
|
||||||
rcu_access_pointer(sk->sk_reuseport_cb) ||
|
rcu_access_pointer(sk->sk_reuseport_cb) ||
|
||||||
(sk2->sk_state != TCP_TIME_WAIT &&
|
(sk2->sk_state != TCP_TIME_WAIT &&
|
||||||
!uid_eq(uid, sock_i_uid(sk2))))) {
|
!uid_eq(uid, sock_i_uid(sk2)))) {
|
||||||
if (inet_rcv_saddr_equal(sk, sk2, true))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (!relax && reuse && sk2->sk_reuse &&
|
|
||||||
sk2->sk_state != TCP_LISTEN) {
|
|
||||||
if (inet_rcv_saddr_equal(sk, sk2, true))
|
if (inet_rcv_saddr_equal(sk, sk2, true))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue