diff options
Diffstat (limited to 'net/x25/x25_in.c')
-rw-r--r-- | net/x25/x25_in.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/x25/x25_in.c b/net/x25/x25_in.c index ba13248aa1c3..1c88762c2794 100644 --- a/net/x25/x25_in.c +++ b/net/x25/x25_in.c | |||
@@ -56,14 +56,17 @@ static int x25_queue_rx_frame(struct sock *sk, struct sk_buff *skb, int more) | |||
56 | skb_reset_transport_header(skbn); | 56 | skb_reset_transport_header(skbn); |
57 | 57 | ||
58 | skbo = skb_dequeue(&x25->fragment_queue); | 58 | skbo = skb_dequeue(&x25->fragment_queue); |
59 | memcpy(skb_put(skbn, skbo->len), skbo->data, skbo->len); | 59 | skb_copy_from_linear_data(skbo, skb_put(skbn, skbo->len), |
60 | skbo->len); | ||
60 | kfree_skb(skbo); | 61 | kfree_skb(skbo); |
61 | 62 | ||
62 | while ((skbo = | 63 | while ((skbo = |
63 | skb_dequeue(&x25->fragment_queue)) != NULL) { | 64 | skb_dequeue(&x25->fragment_queue)) != NULL) { |
64 | skb_pull(skbo, (x25->neighbour->extended) ? | 65 | skb_pull(skbo, (x25->neighbour->extended) ? |
65 | X25_EXT_MIN_LEN : X25_STD_MIN_LEN); | 66 | X25_EXT_MIN_LEN : X25_STD_MIN_LEN); |
66 | memcpy(skb_put(skbn, skbo->len), skbo->data, skbo->len); | 67 | skb_copy_from_linear_data(skbo, |
68 | skb_put(skbn, skbo->len), | ||
69 | skbo->len); | ||
67 | kfree_skb(skbo); | 70 | kfree_skb(skbo); |
68 | } | 71 | } |
69 | 72 | ||