From: Greg Kroah-Hartman Date: Thu, 12 Feb 2026 11:55:19 +0000 (+0100) Subject: 6.12-stable patches X-Git-Tag: v6.12.71~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ea838e47d8605e5cd68f967c2da6515165cadb6c;p=thirdparty%2Fkernel%2Fstable-queue.git 6.12-stable patches added patches: net-tunnel-make-skb_vlan_inet_prepare-return-drop-reasons.patch series --- diff --git a/queue-6.12/net-tunnel-make-skb_vlan_inet_prepare-return-drop-reasons.patch b/queue-6.12/net-tunnel-make-skb_vlan_inet_prepare-return-drop-reasons.patch new file mode 100644 index 0000000000..b2f258feaf --- /dev/null +++ b/queue-6.12/net-tunnel-make-skb_vlan_inet_prepare-return-drop-reasons.patch @@ -0,0 +1,110 @@ +From 9990ddf47d4168088e2246c3d418bf526e40830d Mon Sep 17 00:00:00 2001 +From: Menglong Dong +Date: Wed, 9 Oct 2024 10:28:21 +0800 +Subject: net: tunnel: make skb_vlan_inet_prepare() return drop reasons + +From: Menglong Dong + +commit 9990ddf47d4168088e2246c3d418bf526e40830d upstream. + +Make skb_vlan_inet_prepare return the skb drop reasons, which is just +what pskb_may_pull_reason() returns. Meanwhile, adjust all the call of +it. + +Signed-off-by: Menglong Dong +Reviewed-by: Simon Horman +Signed-off-by: David S. Miller +Cc: Eric Dumazet +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/bareudp.c | 4 ++-- + drivers/net/geneve.c | 4 ++-- + drivers/net/vxlan/vxlan_core.c | 2 +- + include/net/ip_tunnels.h | 13 ++++++++----- + 4 files changed, 13 insertions(+), 10 deletions(-) + +--- a/drivers/net/bareudp.c ++++ b/drivers/net/bareudp.c +@@ -317,7 +317,7 @@ static int bareudp_xmit_skb(struct sk_bu + __be32 saddr; + int err; + +- if (!skb_vlan_inet_prepare(skb, skb->protocol != htons(ETH_P_TEB))) ++ if (skb_vlan_inet_prepare(skb, skb->protocol != htons(ETH_P_TEB))) + return -EINVAL; + + if (!sock) +@@ -387,7 +387,7 @@ static int bareudp6_xmit_skb(struct sk_b + __be16 sport; + int err; + +- if (!skb_vlan_inet_prepare(skb, skb->protocol != htons(ETH_P_TEB))) ++ if (skb_vlan_inet_prepare(skb, skb->protocol != htons(ETH_P_TEB))) + return -EINVAL; + + if (!sock) +--- a/drivers/net/geneve.c ++++ b/drivers/net/geneve.c +@@ -827,7 +827,7 @@ static int geneve_xmit_skb(struct sk_buf + __be16 sport; + int err; + +- if (!skb_vlan_inet_prepare(skb, inner_proto_inherit)) ++ if (skb_vlan_inet_prepare(skb, inner_proto_inherit)) + return -EINVAL; + + if (!gs4) +@@ -937,7 +937,7 @@ static int geneve6_xmit_skb(struct sk_bu + __be16 sport; + int err; + +- if (!skb_vlan_inet_prepare(skb, inner_proto_inherit)) ++ if (skb_vlan_inet_prepare(skb, inner_proto_inherit)) + return -EINVAL; + + if (!gs6) +--- a/drivers/net/vxlan/vxlan_core.c ++++ b/drivers/net/vxlan/vxlan_core.c +@@ -2381,7 +2381,7 @@ void vxlan_xmit_one(struct sk_buff *skb, + __be32 vni = 0; + + no_eth_encap = flags & VXLAN_F_GPE && skb->protocol != htons(ETH_P_TEB); +- if (!skb_vlan_inet_prepare(skb, no_eth_encap)) ++ if (skb_vlan_inet_prepare(skb, no_eth_encap)) + goto drop; + + old_iph = ip_hdr(skb); +--- a/include/net/ip_tunnels.h ++++ b/include/net/ip_tunnels.h +@@ -467,11 +467,12 @@ static inline bool pskb_inet_may_pull(st + + /* Variant of pskb_inet_may_pull(). + */ +-static inline bool skb_vlan_inet_prepare(struct sk_buff *skb, +- bool inner_proto_inherit) ++static inline enum skb_drop_reason ++skb_vlan_inet_prepare(struct sk_buff *skb, bool inner_proto_inherit) + { + int nhlen = 0, maclen = inner_proto_inherit ? 0 : ETH_HLEN; + __be16 type = skb->protocol; ++ enum skb_drop_reason reason; + + /* Essentially this is skb_protocol(skb, true) + * And we get MAC len. +@@ -492,11 +493,13 @@ static inline bool skb_vlan_inet_prepare + /* For ETH_P_IPV6/ETH_P_IP we make sure to pull + * a base network header in skb->head. + */ +- if (!pskb_may_pull(skb, maclen + nhlen)) +- return false; ++ reason = pskb_may_pull_reason(skb, maclen + nhlen); ++ if (reason) ++ return reason; + + skb_set_network_header(skb, maclen); +- return true; ++ ++ return SKB_NOT_DROPPED_YET; + } + + static inline int ip_encap_hlen(struct ip_tunnel_encap *e) diff --git a/queue-6.12/series b/queue-6.12/series new file mode 100644 index 0000000000..059800fe60 --- /dev/null +++ b/queue-6.12/series @@ -0,0 +1 @@ +net-tunnel-make-skb_vlan_inet_prepare-return-drop-reasons.patch