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