udp: Clean up some functions.
authorKuniyuki Iwashima <kuniyu@amazon.com>
Mon, 14 Nov 2022 21:57:53 +0000 (13:57 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:32:13 +0000 (13:32 +0100)
[ Upstream commit 919dfa0b20ae56060dce0436eb710717f8987d18 ]

This patch adds no functional change and cleans up some functions
that the following patches touch around so that we make them tidy
and easy to review/revert.  The change is mainly to keep reverse
christmas tree order.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Stable-dep-of: 7a7160edf1bf ("net: Return errno in sk->sk_prot->get_port().")
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/ipv4/udp.c
net/ipv6/udp.c

index 6a320a614e5473f3e1c321b4974ea736ddb970e3..83fdd2b8afd638b3d1f6ab405c156d9c480451f6 100644 (file)
@@ -232,16 +232,16 @@ static int udp_reuseport_add_sock(struct sock *sk, struct udp_hslot *hslot)
 int udp_lib_get_port(struct sock *sk, unsigned short snum,
                     unsigned int hash2_nulladdr)
 {
-       struct udp_hslot *hslot, *hslot2;
        struct udp_table *udptable = sk->sk_prot->h.udp_table;
-       int    error = 1;
+       struct udp_hslot *hslot, *hslot2;
        struct net *net = sock_net(sk);
+       int error = 1;
 
        if (!snum) {
+               DECLARE_BITMAP(bitmap, PORTS_PER_CHAIN);
+               unsigned short first, last;
                int low, high, remaining;
                unsigned int rand;
-               unsigned short first, last;
-               DECLARE_BITMAP(bitmap, PORTS_PER_CHAIN);
 
                inet_get_local_port_range(net, &low, &high);
                remaining = (high - low) + 1;
@@ -2518,10 +2518,13 @@ static struct sock *__udp4_lib_mcast_demux_lookup(struct net *net,
                                                  __be16 rmt_port, __be32 rmt_addr,
                                                  int dif, int sdif)
 {
-       struct sock *sk, *result;
        unsigned short hnum = ntohs(loc_port);
-       unsigned int slot = udp_hashfn(net, hnum, udp_table.mask);
-       struct udp_hslot *hslot = &udp_table.hash[slot];
+       struct sock *sk, *result;
+       struct udp_hslot *hslot;
+       unsigned int slot;
+
+       slot = udp_hashfn(net, hnum, udp_table.mask);
+       hslot = &udp_table.hash[slot];
 
        /* Do not bother scanning a too big list */
        if (hslot->count > 10)
@@ -2549,14 +2552,18 @@ static struct sock *__udp4_lib_demux_lookup(struct net *net,
                                            __be16 rmt_port, __be32 rmt_addr,
                                            int dif, int sdif)
 {
-       unsigned short hnum = ntohs(loc_port);
-       unsigned int hash2 = ipv4_portaddr_hash(net, loc_addr, hnum);
-       unsigned int slot2 = hash2 & udp_table.mask;
-       struct udp_hslot *hslot2 = &udp_table.hash2[slot2];
        INET_ADDR_COOKIE(acookie, rmt_addr, loc_addr);
-       const __portpair ports = INET_COMBINED_PORTS(rmt_port, hnum);
+       unsigned short hnum = ntohs(loc_port);
+       unsigned int hash2, slot2;
+       struct udp_hslot *hslot2;
+       __portpair ports;
        struct sock *sk;
 
+       hash2 = ipv4_portaddr_hash(net, loc_addr, hnum);
+       slot2 = hash2 & udp_table.mask;
+       hslot2 = &udp_table.hash2[slot2];
+       ports = INET_COMBINED_PORTS(rmt_port, hnum);
+
        udp_portaddr_for_each_entry_rcu(sk, &hslot2->head) {
                if (inet_match(net, sk, acookie, ports, dif, sdif))
                        return sk;
@@ -2957,10 +2964,10 @@ EXPORT_SYMBOL(udp_prot);
 
 static struct sock *udp_get_first(struct seq_file *seq, int start)
 {
-       struct sock *sk;
-       struct udp_seq_afinfo *afinfo;
        struct udp_iter_state *state = seq->private;
        struct net *net = seq_file_net(seq);
+       struct udp_seq_afinfo *afinfo;
+       struct sock *sk;
 
        if (state->bpf_seq_afinfo)
                afinfo = state->bpf_seq_afinfo;
@@ -2991,9 +2998,9 @@ found:
 
 static struct sock *udp_get_next(struct seq_file *seq, struct sock *sk)
 {
-       struct udp_seq_afinfo *afinfo;
        struct udp_iter_state *state = seq->private;
        struct net *net = seq_file_net(seq);
+       struct udp_seq_afinfo *afinfo;
 
        if (state->bpf_seq_afinfo)
                afinfo = state->bpf_seq_afinfo;
@@ -3049,8 +3056,8 @@ EXPORT_SYMBOL(udp_seq_next);
 
 void udp_seq_stop(struct seq_file *seq, void *v)
 {
-       struct udp_seq_afinfo *afinfo;
        struct udp_iter_state *state = seq->private;
+       struct udp_seq_afinfo *afinfo;
 
        if (state->bpf_seq_afinfo)
                afinfo = state->bpf_seq_afinfo;
index bc65e5b7195b3cc0c17f05877896721e70e6984b..98a64e8d9bdaaf666b897a3fe7f23db935b544a5 100644 (file)
@@ -1063,12 +1063,16 @@ static struct sock *__udp6_lib_demux_lookup(struct net *net,
                        int dif, int sdif)
 {
        unsigned short hnum = ntohs(loc_port);
-       unsigned int hash2 = ipv6_portaddr_hash(net, loc_addr, hnum);
-       unsigned int slot2 = hash2 & udp_table.mask;
-       struct udp_hslot *hslot2 = &udp_table.hash2[slot2];
-       const __portpair ports = INET_COMBINED_PORTS(rmt_port, hnum);
+       unsigned int hash2, slot2;
+       struct udp_hslot *hslot2;
+       __portpair ports;
        struct sock *sk;
 
+       hash2 = ipv6_portaddr_hash(net, loc_addr, hnum);
+       slot2 = hash2 & udp_table.mask;
+       hslot2 = &udp_table.hash2[slot2];
+       ports = INET_COMBINED_PORTS(rmt_port, hnum);
+
        udp_portaddr_for_each_entry_rcu(sk, &hslot2->head) {
                if (sk->sk_state == TCP_ESTABLISHED &&
                    inet6_match(net, sk, rmt_addr, loc_addr, ports, dif, sdif))