@@ -1527,7 +1527,7 @@ static int gtp_newlink(struct net *src_net, struct net_device *dev,
1527
1527
}
1528
1528
1529
1529
gn = net_generic (dev_net (dev ), gtp_net_id );
1530
- list_add_rcu (& gtp -> list , & gn -> gtp_dev_list );
1530
+ list_add (& gtp -> list , & gn -> gtp_dev_list );
1531
1531
dev -> priv_destructor = gtp_destructor ;
1532
1532
1533
1533
netdev_dbg (dev , "registered new GTP interface\n" );
@@ -1553,7 +1553,7 @@ static void gtp_dellink(struct net_device *dev, struct list_head *head)
1553
1553
hlist_for_each_entry_safe (pctx , next , & gtp -> tid_hash [i ], hlist_tid )
1554
1554
pdp_context_delete (pctx );
1555
1555
1556
- list_del_rcu (& gtp -> list );
1556
+ list_del (& gtp -> list );
1557
1557
unregister_netdevice_queue (dev , head );
1558
1558
}
1559
1559
@@ -2279,16 +2279,19 @@ static int gtp_genl_dump_pdp(struct sk_buff *skb,
2279
2279
struct gtp_dev * last_gtp = (struct gtp_dev * )cb -> args [2 ], * gtp ;
2280
2280
int i , j , bucket = cb -> args [0 ], skip = cb -> args [1 ];
2281
2281
struct net * net = sock_net (skb -> sk );
2282
+ struct net_device * dev ;
2282
2283
struct pdp_ctx * pctx ;
2283
- struct gtp_net * gn ;
2284
-
2285
- gn = net_generic (net , gtp_net_id );
2286
2284
2287
2285
if (cb -> args [4 ])
2288
2286
return 0 ;
2289
2287
2290
2288
rcu_read_lock ();
2291
- list_for_each_entry_rcu (gtp , & gn -> gtp_dev_list , list ) {
2289
+ for_each_netdev_rcu (net , dev ) {
2290
+ if (dev -> rtnl_link_ops != & gtp_link_ops )
2291
+ continue ;
2292
+
2293
+ gtp = netdev_priv (dev );
2294
+
2292
2295
if (last_gtp && last_gtp != gtp )
2293
2296
continue ;
2294
2297
else
@@ -2483,9 +2486,9 @@ static void __net_exit gtp_net_exit_batch_rtnl(struct list_head *net_list,
2483
2486
2484
2487
list_for_each_entry (net , net_list , exit_list ) {
2485
2488
struct gtp_net * gn = net_generic (net , gtp_net_id );
2486
- struct gtp_dev * gtp ;
2489
+ struct gtp_dev * gtp , * gtp_next ;
2487
2490
2488
- list_for_each_entry (gtp , & gn -> gtp_dev_list , list )
2491
+ list_for_each_entry_safe (gtp , gtp_next , & gn -> gtp_dev_list , list )
2489
2492
gtp_dellink (gtp -> dev , dev_to_kill );
2490
2493
}
2491
2494
}
0 commit comments