Commit 25ad6117 authored by David S. Miller's avatar David S. Miller

Revert "ipv6: Don't depend on per socket memory for neighbour discovery messages"

This reverts commit 1f324e38.

It seems to cause regressions, and in particular the output path
really depends upon there being a socket attached to skb->sk for
checks such as sk_mc_loop(skb->sk) for example.  See ip6_output_finish2().
Reported-by: default avatarStephen Warren <swarren@wwwdotorg.org>
Reported-by: default avatarFabio Estevam <festevam@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 737e828b
...@@ -370,12 +370,16 @@ static struct sk_buff *ndisc_alloc_skb(struct net_device *dev, ...@@ -370,12 +370,16 @@ static struct sk_buff *ndisc_alloc_skb(struct net_device *dev,
{ {
int hlen = LL_RESERVED_SPACE(dev); int hlen = LL_RESERVED_SPACE(dev);
int tlen = dev->needed_tailroom; int tlen = dev->needed_tailroom;
struct sock *sk = dev_net(dev)->ipv6.ndisc_sk;
struct sk_buff *skb; struct sk_buff *skb;
int err;
skb = alloc_skb(hlen + sizeof(struct ipv6hdr) + len + tlen, GFP_ATOMIC); skb = sock_alloc_send_skb(sk,
hlen + sizeof(struct ipv6hdr) + len + tlen,
1, &err);
if (!skb) { if (!skb) {
ND_PRINTK(0, err, "ndisc: %s failed to allocate an skb\n", ND_PRINTK(0, err, "ndisc: %s failed to allocate an skb, err=%d\n",
__func__); __func__, err);
return NULL; return NULL;
} }
......
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