mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 07:22:33 +00:00
24 lines
774 B
Diff
24 lines
774 B
Diff
|
From: Felix Fietkau <nbd@nbd.name>
|
||
|
Date: Sat, 27 Apr 2024 18:54:25 +0200
|
||
|
Subject: [PATCH] net: bridge: fix multicast-to-unicast with fraglist GSO
|
||
|
|
||
|
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>
|
||
|
---
|
||
|
|
||
|
--- a/net/bridge/br_forward.c
|
||
|
+++ b/net/bridge/br_forward.c
|
||
|
@@ -261,7 +261,7 @@ static void maybe_deliver_addr(struct ne
|
||
|
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;
|