tcp: Rearrange tests in inet_bind2_bucket_(addr_match|match_addr_any)().
authorKuniyuki Iwashima <kuniyu@amazon.com>
Tue, 19 Dec 2023 00:18:23 +0000 (09:18 +0900)
committerDavid S. Miller <davem@davemloft.net>
Fri, 22 Dec 2023 22:15:34 +0000 (22:15 +0000)
The protocol family tests in inet_bind2_bucket_addr_match() and
inet_bind2_bucket_match_addr_any() are ordered as follows.

  if (sk->sk_family != tb2->family)
  else if (sk->sk_family == AF_INET6)
  else

This patch rearranges them so that AF_INET6 socket is handled first
to make the following patch tidy, where tb2->family will be removed.

  if (sk->sk_family == AF_INET6)
  else if (tb2->family == AF_INET6)
  else

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/inet_hashtables.c

index 7e8dbc5cc31765149e8477b40a2fd4820df44828..896fcefc06c00bd2a093093abb3a4a9f3b3eef12 100644 (file)
@@ -149,18 +149,17 @@ static bool inet_bind2_bucket_addr_match(const struct inet_bind2_bucket *tb2,
                                         const struct sock *sk)
 {
 #if IS_ENABLED(CONFIG_IPV6)
-       if (sk->sk_family != tb2->family) {
-               if (sk->sk_family == AF_INET)
-                       return ipv6_addr_v4mapped(&tb2->v6_rcv_saddr) &&
-                               tb2->v6_rcv_saddr.s6_addr32[3] == sk->sk_rcv_saddr;
+       if (sk->sk_family == AF_INET6) {
+               if (tb2->family == AF_INET6)
+                       return ipv6_addr_equal(&tb2->v6_rcv_saddr, &sk->sk_v6_rcv_saddr);
 
                return ipv6_addr_v4mapped(&sk->sk_v6_rcv_saddr) &&
                        sk->sk_v6_rcv_saddr.s6_addr32[3] == tb2->rcv_saddr;
        }
 
-       if (sk->sk_family == AF_INET6)
-               return ipv6_addr_equal(&tb2->v6_rcv_saddr,
-                                      &sk->sk_v6_rcv_saddr);
+       if (tb2->family == AF_INET6)
+               return ipv6_addr_v4mapped(&tb2->v6_rcv_saddr) &&
+                       tb2->v6_rcv_saddr.s6_addr32[3] == sk->sk_rcv_saddr;
 #endif
        return tb2->rcv_saddr == sk->sk_rcv_saddr;
 }
@@ -836,17 +835,17 @@ bool inet_bind2_bucket_match_addr_any(const struct inet_bind2_bucket *tb, const
                return false;
 
 #if IS_ENABLED(CONFIG_IPV6)
-       if (sk->sk_family != tb->family) {
-               if (sk->sk_family == AF_INET)
-                       return ipv6_addr_any(&tb->v6_rcv_saddr) ||
-                               ipv6_addr_v4mapped_any(&tb->v6_rcv_saddr);
+       if (sk->sk_family == AF_INET6) {
+               if (tb->family == AF_INET6)
+                       return ipv6_addr_any(&tb->v6_rcv_saddr);
 
                return ipv6_addr_v4mapped(&sk->sk_v6_rcv_saddr) &&
                        tb->rcv_saddr == 0;
        }
 
-       if (sk->sk_family == AF_INET6)
-               return ipv6_addr_any(&tb->v6_rcv_saddr);
+       if (tb->family == AF_INET6)
+               return ipv6_addr_any(&tb->v6_rcv_saddr) ||
+                       ipv6_addr_v4mapped_any(&tb->v6_rcv_saddr);
 #endif
        return tb->rcv_saddr == 0;
 }