Commit 5798bbd9 authored by Stephen Hemminger's avatar Stephen Hemminger

[NET]: PPP handling fragmented skbuffs.

parent b28ae60c
...@@ -844,7 +844,7 @@ ppp_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -844,7 +844,7 @@ ppp_start_xmit(struct sk_buff *skb, struct net_device *dev)
if (ns == 0) if (ns == 0)
goto outf; goto outf;
skb_reserve(ns, dev->hard_header_len); skb_reserve(ns, dev->hard_header_len);
memcpy(skb_put(ns, skb->len), skb->data, skb->len); skb_copy_bits(skb, 0, skb_put(ns, skb->len), skb->len);
kfree_skb(skb); kfree_skb(skb);
skb = ns; skb = ns;
} }
...@@ -1455,7 +1455,7 @@ ppp_receive_nonmp_frame(struct ppp *ppp, struct sk_buff *skb) ...@@ -1455,7 +1455,7 @@ ppp_receive_nonmp_frame(struct ppp *ppp, struct sk_buff *skb)
goto err; goto err;
} }
skb_reserve(ns, 2); skb_reserve(ns, 2);
memcpy(skb_put(ns, skb->len), skb->data, skb->len); skb_copy_bits(skb, 0, skb_put(ns, skb->len), skb->len);
kfree_skb(skb); kfree_skb(skb);
skb = ns; skb = ns;
} }
...@@ -1826,7 +1826,7 @@ ppp_mp_reconstruct(struct ppp *ppp) ...@@ -1826,7 +1826,7 @@ ppp_mp_reconstruct(struct ppp *ppp)
if (head != tail) if (head != tail)
/* copy to a single skb */ /* copy to a single skb */
for (p = head; p != tail->next; p = p->next) for (p = head; p != tail->next; p = p->next)
memcpy(skb_put(skb, p->len), p->data, p->len); skb_copy_bits(p, 0, skb_put(skb, p->len), p->len);
ppp->nextseq = tail->sequence + 1; ppp->nextseq = tail->sequence + 1;
head = tail->next; head = tail->next;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment