skb: allow skb_scrub_packet() to be used by tunnels

This function was only used when a packet was sent to another netns. Now, it can
also be used after tunnel encapsulation or decapsulation.

Only skb_orphan() should not be done when a packet is not crossing netns.

Signed-off-by: Nicolas Dichtel <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
Nicolas Dichtel 2013-09-02 15:34:56 +02:00 • committed by David S. Miller
commit 8b27f27797
6 changed files with 20 additions and 15 deletions

View file

@ -462,7 +462,7 @@ int ip_tunnel_rcv(struct ip_tunnel *tunnel, struct sk_buff *skb,
}
if (!net_eq(tunnel->net, dev_net(tunnel->dev)))
skb_scrub_packet(skb);
skb_scrub_packet(skb, true);
gro_cells_receive(&tunnel->gro_cells, skb);
return 0;
@ -615,7 +615,7 @@ void ip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev,
}
if (!net_eq(tunnel->net, dev_net(dev)))
skb_scrub_packet(skb);
skb_scrub_packet(skb, true);
if (tunnel->err_count > 0) {
if (time_before(jiffies,