File tree Expand file tree Collapse file tree 1 file changed +4
-6
lines changed Expand file tree Collapse file tree 1 file changed +4
-6
lines changed Original file line number Diff line number Diff line change @@ -418,15 +418,11 @@ static struct sk_buff *ndisc_alloc_skb(struct net_device *dev,
418
418
{
419
419
int hlen = LL_RESERVED_SPACE (dev );
420
420
int tlen = dev -> needed_tailroom ;
421
- struct sock * sk = dev_net (dev )-> ipv6 .ndisc_sk ;
422
421
struct sk_buff * skb ;
423
422
424
423
skb = alloc_skb (hlen + sizeof (struct ipv6hdr ) + len + tlen , GFP_ATOMIC );
425
- if (!skb ) {
426
- ND_PRINTK (0 , err , "ndisc: %s failed to allocate an skb\n" ,
427
- __func__ );
424
+ if (!skb )
428
425
return NULL ;
429
- }
430
426
431
427
skb -> protocol = htons (ETH_P_IPV6 );
432
428
skb -> dev = dev ;
@@ -437,7 +433,9 @@ static struct sk_buff *ndisc_alloc_skb(struct net_device *dev,
437
433
/* Manually assign socket ownership as we avoid calling
438
434
* sock_alloc_send_pskb() to bypass wmem buffer limits
439
435
*/
440
- skb_set_owner_w (skb , sk );
436
+ rcu_read_lock ();
437
+ skb_set_owner_w (skb , dev_net_rcu (dev )-> ipv6 .ndisc_sk );
438
+ rcu_read_unlock ();
441
439
442
440
return skb ;
443
441
}
You can’t perform that action at this time.
0 commit comments