mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
Revert "net: add exit_batch_rtnl() method"
This reverts commit 760f415e08 which is
commit fd4f101edbd9f99567ab2adb1f2169579ede7c13 upstream.
It breaks the Android kernel abi and can be brought back in the future
in an abi-safe way if it is really needed.
Bug: 161946584
Change-Id: I7cd575ae9e9d99f5181fdc297649d7e9f96d56fc
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -455,9 +455,6 @@ struct pernet_operations {
|
||||
void (*pre_exit)(struct net *net);
|
||||
void (*exit)(struct net *net);
|
||||
void (*exit_batch)(struct list_head *net_exit_list);
|
||||
/* Following method is called with RTNL held. */
|
||||
void (*exit_batch_rtnl)(struct list_head *net_exit_list,
|
||||
struct list_head *dev_kill_list);
|
||||
unsigned int *id;
|
||||
size_t size;
|
||||
};
|
||||
|
||||
@@ -314,9 +314,8 @@ static __net_init int setup_net(struct net *net, struct user_namespace *user_ns)
|
||||
{
|
||||
/* Must be called with pernet_ops_rwsem held */
|
||||
const struct pernet_operations *ops, *saved_ops;
|
||||
LIST_HEAD(net_exit_list);
|
||||
LIST_HEAD(dev_kill_list);
|
||||
int error = 0;
|
||||
LIST_HEAD(net_exit_list);
|
||||
|
||||
refcount_set(&net->ns.count, 1);
|
||||
ref_tracker_dir_init(&net->refcnt_tracker, 128);
|
||||
@@ -354,15 +353,6 @@ out_undo:
|
||||
|
||||
synchronize_rcu();
|
||||
|
||||
ops = saved_ops;
|
||||
rtnl_lock();
|
||||
list_for_each_entry_continue_reverse(ops, &pernet_list, list) {
|
||||
if (ops->exit_batch_rtnl)
|
||||
ops->exit_batch_rtnl(&net_exit_list, &dev_kill_list);
|
||||
}
|
||||
unregister_netdevice_many(&dev_kill_list);
|
||||
rtnl_unlock();
|
||||
|
||||
ops = saved_ops;
|
||||
list_for_each_entry_continue_reverse(ops, &pernet_list, list)
|
||||
ops_exit_list(ops, &net_exit_list);
|
||||
@@ -569,7 +559,6 @@ static void cleanup_net(struct work_struct *work)
|
||||
struct net *net, *tmp, *last;
|
||||
struct llist_node *net_kill_list;
|
||||
LIST_HEAD(net_exit_list);
|
||||
LIST_HEAD(dev_kill_list);
|
||||
|
||||
/* Atomically snapshot the list of namespaces to cleanup */
|
||||
net_kill_list = llist_del_all(&cleanup_list);
|
||||
@@ -610,14 +599,6 @@ static void cleanup_net(struct work_struct *work)
|
||||
*/
|
||||
synchronize_rcu();
|
||||
|
||||
rtnl_lock();
|
||||
list_for_each_entry_reverse(ops, &pernet_list, list) {
|
||||
if (ops->exit_batch_rtnl)
|
||||
ops->exit_batch_rtnl(&net_exit_list, &dev_kill_list);
|
||||
}
|
||||
unregister_netdevice_many(&dev_kill_list);
|
||||
rtnl_unlock();
|
||||
|
||||
/* Run all of the network namespace exit methods */
|
||||
list_for_each_entry_reverse(ops, &pernet_list, list)
|
||||
ops_exit_list(ops, &net_exit_list);
|
||||
@@ -1163,17 +1144,7 @@ static void free_exit_list(struct pernet_operations *ops, struct list_head *net_
|
||||
{
|
||||
ops_pre_exit_list(ops, net_exit_list);
|
||||
synchronize_rcu();
|
||||
|
||||
if (ops->exit_batch_rtnl) {
|
||||
LIST_HEAD(dev_kill_list);
|
||||
|
||||
rtnl_lock();
|
||||
ops->exit_batch_rtnl(net_exit_list, &dev_kill_list);
|
||||
unregister_netdevice_many(&dev_kill_list);
|
||||
rtnl_unlock();
|
||||
}
|
||||
ops_exit_list(ops, net_exit_list);
|
||||
|
||||
ops_free_list(ops, net_exit_list);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user