--- /dev/null
+From b5287e4bc5dc60627fdf20b5f426ac86d4db15f4 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 9 Oct 2024 10:28:21 +0800
+Subject: net: tunnel: make skb_vlan_inet_prepare() return drop reasons
+
+From: Menglong Dong <menglong8.dong@gmail.com>
+
+[ Upstream commit 9990ddf47d4168088e2246c3d418bf526e40830d ]
+
+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 <dongml2@chinatelecom.cn>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/bareudp.c | 4 ++--
+ drivers/net/geneve.c | 4 ++--
+ include/net/ip_tunnels.h | 13 ++++++++-----
+ 3 files changed, 12 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/net/bareudp.c b/drivers/net/bareudp.c
+index 54767154de265..cfbc0240126ef 100644
+--- a/drivers/net/bareudp.c
++++ b/drivers/net/bareudp.c
+@@ -319,7 +319,7 @@ static int bareudp_xmit_skb(struct sk_buff *skb, struct net_device *dev,
+ __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)
+@@ -385,7 +385,7 @@ static int bareudp6_xmit_skb(struct sk_buff *skb, struct net_device *dev,
+ __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)
+diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
+index b31441fc99fc4..6234a3c711c53 100644
+--- a/drivers/net/geneve.c
++++ b/drivers/net/geneve.c
+@@ -932,7 +932,7 @@ static int geneve_xmit_skb(struct sk_buff *skb, struct net_device *dev,
+ __be16 sport;
+ int err;
+
+- if (!skb_vlan_inet_prepare(skb, inner_proto_inherit))
++ if (skb_vlan_inet_prepare(skb, inner_proto_inherit))
+ return -EINVAL;
+
+ sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true);
+@@ -1031,7 +1031,7 @@ static int geneve6_xmit_skb(struct sk_buff *skb, struct net_device *dev,
+ __be16 sport;
+ int err;
+
+- if (!skb_vlan_inet_prepare(skb, inner_proto_inherit))
++ if (skb_vlan_inet_prepare(skb, inner_proto_inherit))
+ return -EINVAL;
+
+ sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true);
+diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h
+index e93db837412b2..c649192ddbacf 100644
+--- a/include/net/ip_tunnels.h
++++ b/include/net/ip_tunnels.h
+@@ -354,11 +354,12 @@ static inline bool pskb_inet_may_pull(struct sk_buff *skb)
+
+ /* 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.
+@@ -379,11 +380,13 @@ static inline bool skb_vlan_inet_prepare(struct sk_buff *skb,
+ /* 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)
+--
+2.51.0
+
f2fs-fix-to-avoid-uaf-in-f2fs_write_end_io.patch
f2fs-fix-out-of-bounds-access-in-sysfs-attribute-read-write.patch
usb-serial-option-add-telit-fn920c04-rndis-compositions.patch
+net-tunnel-make-skb_vlan_inet_prepare-return-drop-re.patch
--- /dev/null
+From db6b163b196c9b185461af1e74fd25f1f7dc12b5 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 9 Oct 2024 10:28:21 +0800
+Subject: net: tunnel: make skb_vlan_inet_prepare() return drop reasons
+
+From: Menglong Dong <menglong8.dong@gmail.com>
+
+[ Upstream commit 9990ddf47d4168088e2246c3d418bf526e40830d ]
+
+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 <dongml2@chinatelecom.cn>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/bareudp.c | 4 ++--
+ drivers/net/geneve.c | 4 ++--
+ include/net/ip_tunnels.h | 13 ++++++++-----
+ 3 files changed, 12 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/net/bareudp.c b/drivers/net/bareudp.c
+index 54767154de265..cfbc0240126ef 100644
+--- a/drivers/net/bareudp.c
++++ b/drivers/net/bareudp.c
+@@ -319,7 +319,7 @@ static int bareudp_xmit_skb(struct sk_buff *skb, struct net_device *dev,
+ __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)
+@@ -385,7 +385,7 @@ static int bareudp6_xmit_skb(struct sk_buff *skb, struct net_device *dev,
+ __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)
+diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
+index 27761334e1bff..33dae09f7fb22 100644
+--- a/drivers/net/geneve.c
++++ b/drivers/net/geneve.c
+@@ -927,7 +927,7 @@ static int geneve_xmit_skb(struct sk_buff *skb, struct net_device *dev,
+ __be16 sport;
+ int err;
+
+- if (!skb_vlan_inet_prepare(skb, inner_proto_inherit))
++ if (skb_vlan_inet_prepare(skb, inner_proto_inherit))
+ return -EINVAL;
+
+ sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true);
+@@ -1026,7 +1026,7 @@ static int geneve6_xmit_skb(struct sk_buff *skb, struct net_device *dev,
+ __be16 sport;
+ int err;
+
+- if (!skb_vlan_inet_prepare(skb, inner_proto_inherit))
++ if (skb_vlan_inet_prepare(skb, inner_proto_inherit))
+ return -EINVAL;
+
+ sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true);
+diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h
+index 3d36794cb1899..1051af74285c5 100644
+--- a/include/net/ip_tunnels.h
++++ b/include/net/ip_tunnels.h
+@@ -362,11 +362,12 @@ static inline bool pskb_inet_may_pull(struct sk_buff *skb)
+
+ /* 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.
+@@ -387,11 +388,13 @@ static inline bool skb_vlan_inet_prepare(struct sk_buff *skb,
+ /* 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)
+--
+2.51.0
+
f2fs-fix-zoned-block-device-information-initialization.patch
f2fs-fix-to-avoid-mapping-wrong-physical-block-for-swapfile.patch
usb-serial-option-add-telit-fn920c04-rndis-compositions.patch
+net-tunnel-make-skb_vlan_inet_prepare-return-drop-re.patch