|
@@ -899,17 +899,9 @@ ppp_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
|
|
|
/* Put the 2-byte PPP protocol number on the front,
|
|
|
making sure there is room for the address and control fields. */
|
|
|
- if (skb_headroom(skb) < PPP_HDRLEN) {
|
|
|
- struct sk_buff *ns;
|
|
|
-
|
|
|
- ns = alloc_skb(skb->len + dev->hard_header_len, GFP_ATOMIC);
|
|
|
- if (ns == 0)
|
|
|
- goto outf;
|
|
|
- skb_reserve(ns, dev->hard_header_len);
|
|
|
- skb_copy_bits(skb, 0, skb_put(ns, skb->len), skb->len);
|
|
|
- kfree_skb(skb);
|
|
|
- skb = ns;
|
|
|
- }
|
|
|
+ if (skb_cow_head(skb, PPP_HDRLEN))
|
|
|
+ goto outf;
|
|
|
+
|
|
|
pp = skb_push(skb, 2);
|
|
|
proto = npindex_to_proto[npi];
|
|
|
pp[0] = proto >> 8;
|