Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
authorJakub Kicinski <kuba@kernel.org>
Fri, 5 Apr 2024 00:03:18 +0000 (17:03 -0700)
committerJakub Kicinski <kuba@kernel.org>
Fri, 5 Apr 2024 01:01:07 +0000 (18:01 -0700)
Cross-merge networking fixes after downstream PR.

Conflicts:

net/ipv4/ip_gre.c
  17af420545a7 ("erspan: make sure erspan_base_hdr is present in skb->head")
  5832c4a77d69 ("ip_tunnel: convert __be16 tunnel flags to bitmaps")
https://lore.kernel.org/all/20240402103253.3b54a1cf@canb.auug.org.au/

Adjacent changes:

net/ipv6/ip6_fib.c
  d21d40605bca ("ipv6: Fix infinite recursion in fib6_dump_done().")
  5fc68320c1fb ("ipv6: remove RTNL protection from inet6_dump_fib()")

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
21 files changed:
1  2 
MAINTAINERS
arch/x86/net/bpf_jit_comp.c
drivers/net/ethernet/intel/e1000e/netdev.c
drivers/net/ethernet/intel/i40e/i40e_main.c
drivers/net/ethernet/intel/i40e/i40e_txrx.c
drivers/net/ethernet/intel/ice/ice_common.c
drivers/net/ethernet/intel/idpf/idpf_txrx.c
drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c
drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c
drivers/net/ethernet/renesas/ravb_main.c
include/linux/bpf.h
kernel/bpf/syscall.c
kernel/bpf/verifier.c
kernel/trace/bpf_trace.c
net/core/dev.c
net/ipv4/ip_gre.c
net/ipv4/udp.c
net/ipv6/ip6_fib.c
net/ipv6/ip6_gre.c
net/ipv6/udp.c
scripts/kernel-doc

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/core/dev.c
Simple merge
index 3c46a7fef8db8cc056685b03c833fb28d5e41fe0,57ddcd8c62f67e493b74634a793592fcd259e04e..c3af965dc40787f6a7cb11b2fcf6d34269a367af
@@@ -279,14 -276,19 +279,19 @@@ static int erspan_rcv(struct sk_buff *s
        iph = ip_hdr(skb);
        if (is_erspan_type1(gre_hdr_len)) {
                ver = 0;
 -              tunnel = ip_tunnel_lookup(itn, skb->dev->ifindex,
 -                                        tpi->flags | TUNNEL_NO_KEY,
 +              __set_bit(IP_TUNNEL_NO_KEY_BIT, flags);
 +              tunnel = ip_tunnel_lookup(itn, skb->dev->ifindex, flags,
                                          iph->saddr, iph->daddr, 0);
        } else {
+               if (unlikely(!pskb_may_pull(skb,
+                                           gre_hdr_len + sizeof(*ershdr))))
+                       return PACKET_REJECT;
                ershdr = (struct erspan_base_hdr *)(skb->data + gre_hdr_len);
                ver = ershdr->ver;
 -              tunnel = ip_tunnel_lookup(itn, skb->dev->ifindex,
 -                                        tpi->flags | TUNNEL_KEY,
+               iph = ip_hdr(skb);
 +              __set_bit(IP_TUNNEL_KEY_BIT, flags);
 +              tunnel = ip_tunnel_lookup(itn, skb->dev->ifindex, flags,
                                          iph->saddr, iph->daddr, tpi->key);
        }
  
diff --cc net/ipv4/udp.c
Simple merge
index 284002a2a890526960c1360ebab4378bb8bb43f8,7209419cfb0e9c295a3feb5ecd3f9e1720ca16dc..ddd8e3c2df4a54db2d1837e56fc1631ba30d10cd
@@@ -650,21 -651,19 +650,21 @@@ static int inet6_dump_fib(struct sk_buf
        if (!w) {
                /* New dump:
                 *
-                * 1. hook callback destructor.
-                */
-               cb->args[3] = (long)cb->done;
-               cb->done = fib6_dump_done;
-               /*
-                * 2. allocate and initialize walker.
+                * 1. allocate and initialize walker.
                 */
                w = kzalloc(sizeof(*w), GFP_ATOMIC);
 -              if (!w)
 -                      return -ENOMEM;
 +              if (!w) {
 +                      err = -ENOMEM;
 +                      goto unlock;
 +              }
                w->func = fib6_dump_node;
                cb->args[2] = (long)w;
+               /* 2. hook callback destructor.
+                */
+               cb->args[3] = (long)cb->done;
+               cb->done = fib6_dump_done;
        }
  
        arg.skb = skb;
Simple merge
diff --cc net/ipv6/udp.c
Simple merge
Simple merge