diff options
Diffstat (limited to 'net/ipv6/sit.c')
-rw-r--r-- | net/ipv6/sit.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index 1efa95a99f45..eb20bb690abd 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c | |||
@@ -532,7 +532,8 @@ static int ipip6_tunnel_xmit(struct sk_buff *skb, struct net_device *dev) | |||
532 | */ | 532 | */ |
533 | max_headroom = LL_RESERVED_SPACE(tdev)+sizeof(struct iphdr); | 533 | max_headroom = LL_RESERVED_SPACE(tdev)+sizeof(struct iphdr); |
534 | 534 | ||
535 | if (skb_headroom(skb) < max_headroom || skb_cloned(skb) || skb_shared(skb)) { | 535 | if (skb_headroom(skb) < max_headroom || skb_shared(skb) || |
536 | (skb_cloned(skb) && !skb_clone_writable(skb, 0))) { | ||
536 | struct sk_buff *new_skb = skb_realloc_headroom(skb, max_headroom); | 537 | struct sk_buff *new_skb = skb_realloc_headroom(skb, max_headroom); |
537 | if (!new_skb) { | 538 | if (!new_skb) { |
538 | ip_rt_put(rt); | 539 | ip_rt_put(rt); |