|
@@ -470,6 +470,7 @@ static int inet_reuseport_add_sock(struct sock *sk,
|
|
|
const struct sock *sk2,
|
|
|
bool match_wildcard))
|
|
|
{
|
|
|
+ struct inet_bind_bucket *tb = inet_csk(sk)->icsk_bind_hash;
|
|
|
struct sock *sk2;
|
|
|
struct hlist_nulls_node *node;
|
|
|
kuid_t uid = sock_i_uid(sk);
|
|
@@ -479,6 +480,7 @@ static int inet_reuseport_add_sock(struct sock *sk,
|
|
|
sk2->sk_family == sk->sk_family &&
|
|
|
ipv6_only_sock(sk2) == ipv6_only_sock(sk) &&
|
|
|
sk2->sk_bound_dev_if == sk->sk_bound_dev_if &&
|
|
|
+ inet_csk(sk2)->icsk_bind_hash == tb &&
|
|
|
sk2->sk_reuseport && uid_eq(uid, sock_i_uid(sk2)) &&
|
|
|
saddr_same(sk, sk2, false))
|
|
|
return reuseport_add_sock(sk, sk2);
|