Hi Mantas,
Thank you for the report. Could you try out the attached patch?
On Sat, Mar 11, 2017 at 05:10:22PM +0200, Mantas Mikulėnas wrote:
> Hello,
>
> It seems that commit 002d8a1a6c11b9b2a8ac615095589111dd52749b ("net:
> skip genenerating uevents for network namespaces that are exiting")
> broke 'remove' uevents for *all* network interfaces, even for those in
> the main/default namespace.
>
> Other than breaking some of my udev rules, this also causes problems for
> NetworkManager, which apparently relies on those uevents to update its
> interface information cache. (I ended up reverting that commit locally
> just so I could connect to VPNs again.)
>
> This problem is present in both v4.10.1 and current master
> (v4.11-rc1-290-g434fd6353b4c).
>
> --
> Mantas Mikulėnas <[email protected]>
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index 3c4bbec..20c48cf 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -34,6 +34,7 @@ EXPORT_SYMBOL_GPL(net_namespace_list);
struct net init_net = {
.dev_base_head = LIST_HEAD_INIT(init_net.dev_base_head),
+ .exit_list = LIST_HEAD_INIT(init_net.exit_list),
};
EXPORT_SYMBOL(init_net);
@@ -286,6 +287,7 @@ static __net_init int setup_net(struct net *net, struct
user_namespace *user_ns)
net->user_ns = user_ns;
idr_init(&net->netns_ids);
spin_lock_init(&net->nsid_lock);
+ INIT_LIST_HEAD(&net->exit_list);
list_for_each_entry(ops, &pernet_list, list) {
error = ops_init(ops, net);