]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blobdiff - queue-5.10/net-bridge-fix-multicast-to-unicast-with-fraglist-gs.patch
Fixes for 5.10
[thirdparty/kernel/stable-queue.git] / queue-5.10 / net-bridge-fix-multicast-to-unicast-with-fraglist-gs.patch
diff --git a/queue-5.10/net-bridge-fix-multicast-to-unicast-with-fraglist-gs.patch b/queue-5.10/net-bridge-fix-multicast-to-unicast-with-fraglist-gs.patch
new file mode 100644 (file)
index 0000000..8594277
--- /dev/null
@@ -0,0 +1,39 @@
+From d69df43cbc38c78ee2a493005315e7ad1603172c Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 27 Apr 2024 20:24:18 +0200
+Subject: net: bridge: fix multicast-to-unicast with fraglist GSO
+
+From: Felix Fietkau <nbd@nbd.name>
+
+[ Upstream commit 59c878cbcdd80ed39315573b3511d0acfd3501b5 ]
+
+Calling skb_copy on a SKB_GSO_FRAGLIST skb is not valid, since it returns
+an invalid linearized skb. This code only needs to change the ethernet
+header, so pskb_copy is the right function to call here.
+
+Fixes: 6db6f0eae605 ("bridge: multicast to unicast")
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+Acked-by: Paolo Abeni <pabeni@redhat.com>
+Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/bridge/br_forward.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
+index f2ef75c7ccc68..3a70682e63524 100644
+--- a/net/bridge/br_forward.c
++++ b/net/bridge/br_forward.c
+@@ -253,7 +253,7 @@ static void maybe_deliver_addr(struct net_bridge_port *p, struct sk_buff *skb,
+       if (skb->dev == p->dev && ether_addr_equal(src, addr))
+               return;
+-      skb = skb_copy(skb, GFP_ATOMIC);
++      skb = pskb_copy(skb, GFP_ATOMIC);
+       if (!skb) {
+               DEV_STATS_INC(dev, tx_dropped);
+               return;
+-- 
+2.43.0
+