diff options
Diffstat (limited to 'net/ipv4/inet_connection_sock.c')
-rw-r--r-- | net/ipv4/inet_connection_sock.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c index b9c64b40a83a..c039c937ba90 100644 --- a/net/ipv4/inet_connection_sock.c +++ b/net/ipv4/inet_connection_sock.c | |||
@@ -266,7 +266,7 @@ static inline int sk_reuseport_match(struct inet_bind_bucket *tb, | |||
266 | #if IS_ENABLED(CONFIG_IPV6) | 266 | #if IS_ENABLED(CONFIG_IPV6) |
267 | if (tb->fast_sk_family == AF_INET6) | 267 | if (tb->fast_sk_family == AF_INET6) |
268 | return ipv6_rcv_saddr_equal(&tb->fast_v6_rcv_saddr, | 268 | return ipv6_rcv_saddr_equal(&tb->fast_v6_rcv_saddr, |
269 | &sk->sk_v6_rcv_saddr, | 269 | inet6_rcv_saddr(sk), |
270 | tb->fast_rcv_saddr, | 270 | tb->fast_rcv_saddr, |
271 | sk->sk_rcv_saddr, | 271 | sk->sk_rcv_saddr, |
272 | tb->fast_ipv6_only, | 272 | tb->fast_ipv6_only, |
@@ -321,13 +321,14 @@ tb_found: | |||
321 | goto fail_unlock; | 321 | goto fail_unlock; |
322 | } | 322 | } |
323 | success: | 323 | success: |
324 | if (!hlist_empty(&tb->owners)) { | 324 | if (hlist_empty(&tb->owners)) { |
325 | tb->fastreuse = reuse; | 325 | tb->fastreuse = reuse; |
326 | if (sk->sk_reuseport) { | 326 | if (sk->sk_reuseport) { |
327 | tb->fastreuseport = FASTREUSEPORT_ANY; | 327 | tb->fastreuseport = FASTREUSEPORT_ANY; |
328 | tb->fastuid = uid; | 328 | tb->fastuid = uid; |
329 | tb->fast_rcv_saddr = sk->sk_rcv_saddr; | 329 | tb->fast_rcv_saddr = sk->sk_rcv_saddr; |
330 | tb->fast_ipv6_only = ipv6_only_sock(sk); | 330 | tb->fast_ipv6_only = ipv6_only_sock(sk); |
331 | tb->fast_sk_family = sk->sk_family; | ||
331 | #if IS_ENABLED(CONFIG_IPV6) | 332 | #if IS_ENABLED(CONFIG_IPV6) |
332 | tb->fast_v6_rcv_saddr = sk->sk_v6_rcv_saddr; | 333 | tb->fast_v6_rcv_saddr = sk->sk_v6_rcv_saddr; |
333 | #endif | 334 | #endif |
@@ -354,6 +355,7 @@ success: | |||
354 | tb->fastuid = uid; | 355 | tb->fastuid = uid; |
355 | tb->fast_rcv_saddr = sk->sk_rcv_saddr; | 356 | tb->fast_rcv_saddr = sk->sk_rcv_saddr; |
356 | tb->fast_ipv6_only = ipv6_only_sock(sk); | 357 | tb->fast_ipv6_only = ipv6_only_sock(sk); |
358 | tb->fast_sk_family = sk->sk_family; | ||
357 | #if IS_ENABLED(CONFIG_IPV6) | 359 | #if IS_ENABLED(CONFIG_IPV6) |
358 | tb->fast_v6_rcv_saddr = sk->sk_v6_rcv_saddr; | 360 | tb->fast_v6_rcv_saddr = sk->sk_v6_rcv_saddr; |
359 | #endif | 361 | #endif |