Revert "ipv6: Don't depend on per socket memory for neighbour discovery messages"
This reverts commit 1f324e3887
.
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: Stephen Warren <swarren@wwwdotorg.org>
Reported-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
737e828bdb
commit
25ad6117e7
|
@ -370,12 +370,16 @@ static struct sk_buff *ndisc_alloc_skb(struct net_device *dev,
|
|||
{
|
||||
int hlen = LL_RESERVED_SPACE(dev);
|
||||
int tlen = dev->needed_tailroom;
|
||||
struct sock *sk = dev_net(dev)->ipv6.ndisc_sk;
|
||||
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) {
|
||||
ND_PRINTK(0, err, "ndisc: %s failed to allocate an skb\n",
|
||||
__func__);
|
||||
ND_PRINTK(0, err, "ndisc: %s failed to allocate an skb, err=%d\n",
|
||||
__func__, err);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue