diff options
Diffstat (limited to 'net/bridge/br_forward.c')
| -rw-r--r-- | net/bridge/br_forward.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c index bdd9ccea17ce..d2c27c808d3b 100644 --- a/net/bridge/br_forward.c +++ b/net/bridge/br_forward.c | |||
| @@ -67,6 +67,11 @@ static void __br_forward(const struct net_bridge_port *to, struct sk_buff *skb) | |||
| 67 | { | 67 | { |
| 68 | struct net_device *indev; | 68 | struct net_device *indev; |
| 69 | 69 | ||
| 70 | if (skb_warn_if_lro(skb)) { | ||
| 71 | kfree_skb(skb); | ||
| 72 | return; | ||
| 73 | } | ||
| 74 | |||
| 70 | indev = skb->dev; | 75 | indev = skb->dev; |
| 71 | skb->dev = to->dev; | 76 | skb->dev = to->dev; |
| 72 | skb_forward_csum(skb); | 77 | skb_forward_csum(skb); |
| @@ -89,7 +94,7 @@ void br_deliver(const struct net_bridge_port *to, struct sk_buff *skb) | |||
| 89 | /* called with rcu_read_lock */ | 94 | /* called with rcu_read_lock */ |
| 90 | void br_forward(const struct net_bridge_port *to, struct sk_buff *skb) | 95 | void br_forward(const struct net_bridge_port *to, struct sk_buff *skb) |
| 91 | { | 96 | { |
| 92 | if (!skb_warn_if_lro(skb) && should_deliver(to, skb)) { | 97 | if (should_deliver(to, skb)) { |
| 93 | __br_forward(to, skb); | 98 | __br_forward(to, skb); |
| 94 | return; | 99 | return; |
| 95 | } | 100 | } |
