diff options
-rw-r--r-- | drivers/net/ppp_generic.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c index 9293c82ef2af..7e21342becb2 100644 --- a/drivers/net/ppp_generic.c +++ b/drivers/net/ppp_generic.c | |||
@@ -899,17 +899,9 @@ ppp_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
899 | 899 | ||
900 | /* Put the 2-byte PPP protocol number on the front, | 900 | /* Put the 2-byte PPP protocol number on the front, |
901 | making sure there is room for the address and control fields. */ | 901 | making sure there is room for the address and control fields. */ |
902 | if (skb_headroom(skb) < PPP_HDRLEN) { | 902 | if (skb_cow_head(skb, PPP_HDRLEN)) |
903 | struct sk_buff *ns; | 903 | goto outf; |
904 | 904 | ||
905 | ns = alloc_skb(skb->len + dev->hard_header_len, GFP_ATOMIC); | ||
906 | if (ns == 0) | ||
907 | goto outf; | ||
908 | skb_reserve(ns, dev->hard_header_len); | ||
909 | skb_copy_bits(skb, 0, skb_put(ns, skb->len), skb->len); | ||
910 | kfree_skb(skb); | ||
911 | skb = ns; | ||
912 | } | ||
913 | pp = skb_push(skb, 2); | 905 | pp = skb_push(skb, 2); |
914 | proto = npindex_to_proto[npi]; | 906 | proto = npindex_to_proto[npi]; |
915 | pp[0] = proto >> 8; | 907 | pp[0] = proto >> 8; |