diff options
-rw-r--r-- | net/ipv6/ndisc.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 5cb98df966c2..04d31c2fbef1 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c | |||
@@ -370,12 +370,16 @@ static struct sk_buff *ndisc_alloc_skb(struct net_device *dev, | |||
370 | { | 370 | { |
371 | int hlen = LL_RESERVED_SPACE(dev); | 371 | int hlen = LL_RESERVED_SPACE(dev); |
372 | int tlen = dev->needed_tailroom; | 372 | int tlen = dev->needed_tailroom; |
373 | struct sock *sk = dev_net(dev)->ipv6.ndisc_sk; | ||
373 | struct sk_buff *skb; | 374 | struct sk_buff *skb; |
375 | int err; | ||
374 | 376 | ||
375 | skb = alloc_skb(hlen + sizeof(struct ipv6hdr) + len + tlen, GFP_ATOMIC); | 377 | skb = sock_alloc_send_skb(sk, |
378 | hlen + sizeof(struct ipv6hdr) + len + tlen, | ||
379 | 1, &err); | ||
376 | if (!skb) { | 380 | if (!skb) { |
377 | ND_PRINTK(0, err, "ndisc: %s failed to allocate an skb\n", | 381 | ND_PRINTK(0, err, "ndisc: %s failed to allocate an skb, err=%d\n", |
378 | __func__); | 382 | __func__, err); |
379 | return NULL; | 383 | return NULL; |
380 | } | 384 | } |
381 | 385 | ||