diff options
Diffstat (limited to 'net/ipv6/inet6_connection_sock.c')
-rw-r--r-- | net/ipv6/inet6_connection_sock.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/ipv6/inet6_connection_sock.c b/net/ipv6/inet6_connection_sock.c index 36c3f0155010..532c3ef282c5 100644 --- a/net/ipv6/inet6_connection_sock.c +++ b/net/ipv6/inet6_connection_sock.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <net/ip6_route.h> | 26 | #include <net/ip6_route.h> |
27 | #include <net/sock.h> | 27 | #include <net/sock.h> |
28 | #include <net/inet6_connection_sock.h> | 28 | #include <net/inet6_connection_sock.h> |
29 | #include <net/sock_reuseport.h> | ||
29 | 30 | ||
30 | int inet6_csk_bind_conflict(const struct sock *sk, | 31 | int inet6_csk_bind_conflict(const struct sock *sk, |
31 | const struct inet_bind_bucket *tb, bool relax) | 32 | const struct inet_bind_bucket *tb, bool relax) |
@@ -48,6 +49,7 @@ int inet6_csk_bind_conflict(const struct sock *sk, | |||
48 | if ((!reuse || !sk2->sk_reuse || | 49 | if ((!reuse || !sk2->sk_reuse || |
49 | sk2->sk_state == TCP_LISTEN) && | 50 | sk2->sk_state == TCP_LISTEN) && |
50 | (!reuseport || !sk2->sk_reuseport || | 51 | (!reuseport || !sk2->sk_reuseport || |
52 | rcu_access_pointer(sk->sk_reuseport_cb) || | ||
51 | (sk2->sk_state != TCP_TIME_WAIT && | 53 | (sk2->sk_state != TCP_TIME_WAIT && |
52 | !uid_eq(uid, | 54 | !uid_eq(uid, |
53 | sock_i_uid((struct sock *)sk2))))) { | 55 | sock_i_uid((struct sock *)sk2))))) { |