[PPP] generic: Call skb_cow_head before scribbling over skb
It's rude to write over data that other people are still using. So call skb_cow_head before PPP proceeds to modify the skb data. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d9cc20484e
commit
7b797d5b15
|
@ -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;
|
||||
if (skb_cow_head(skb, PPP_HDRLEN))
|
||||
goto outf;
|
||||
|
||||
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;
|
||||
}
|
||||
pp = skb_push(skb, 2);
|
||||
proto = npindex_to_proto[npi];
|
||||
pp[0] = proto >> 8;
|
||||
|
|
Loading…
Reference in New Issue