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; |
