diff options
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/ip_tunnel.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/ipv4/ip_tunnel.c b/net/ipv4/ip_tunnel.c index 9fdf8a6d95f3..fbc1094964bf 100644 --- a/net/ipv4/ip_tunnel.c +++ b/net/ipv4/ip_tunnel.c | |||
@@ -454,15 +454,16 @@ int ip_tunnel_rcv(struct ip_tunnel *tunnel, struct sk_buff *skb, | |||
454 | tstats->rx_bytes += skb->len; | 454 | tstats->rx_bytes += skb->len; |
455 | u64_stats_update_end(&tstats->syncp); | 455 | u64_stats_update_end(&tstats->syncp); |
456 | 456 | ||
457 | if (tunnel->net != dev_net(tunnel->dev)) | ||
458 | skb_scrub_packet(skb); | ||
459 | |||
460 | if (tunnel->dev->type == ARPHRD_ETHER) { | 457 | if (tunnel->dev->type == ARPHRD_ETHER) { |
461 | skb->protocol = eth_type_trans(skb, tunnel->dev); | 458 | skb->protocol = eth_type_trans(skb, tunnel->dev); |
462 | skb_postpull_rcsum(skb, eth_hdr(skb), ETH_HLEN); | 459 | skb_postpull_rcsum(skb, eth_hdr(skb), ETH_HLEN); |
463 | } else { | 460 | } else { |
464 | skb->dev = tunnel->dev; | 461 | skb->dev = tunnel->dev; |
465 | } | 462 | } |
463 | |||
464 | if (tunnel->net != dev_net(tunnel->dev)) | ||
465 | skb_scrub_packet(skb); | ||
466 | |||
466 | gro_cells_receive(&tunnel->gro_cells, skb); | 467 | gro_cells_receive(&tunnel->gro_cells, skb); |
467 | return 0; | 468 | return 0; |
468 | 469 | ||