diff options
Diffstat (limited to 'net/ipv4/ping.c')
-rw-r--r-- | net/ipv4/ping.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c index 0d33f947a87f..04ce671430cb 100644 --- a/net/ipv4/ping.c +++ b/net/ipv4/ping.c @@ -973,8 +973,11 @@ void ping_rcv(struct sk_buff *skb) sk = ping_lookup(net, skb, ntohs(icmph->un.echo.id)); if (sk != NULL) { + struct sk_buff *skb2 = skb_clone(skb, GFP_ATOMIC); + pr_debug("rcv on socket %p\n", sk); - ping_queue_rcv_skb(sk, skb_get(skb)); + if (skb2) + ping_queue_rcv_skb(sk, skb2); sock_put(sk); return; } |