From 7735e4888b696c80b9fcd39e3afa3e590c203627 Mon Sep 17 00:00:00 2001 From: "Eric W. Biederman" Date: Thu, 3 Dec 2009 02:29:06 +0000 Subject: [PATCH] --- yaml --- r: 172127 b: refs/heads/master c: 3a765edadb28cc736d185f67d1ba6bedcc85f4b9 h: refs/heads/master i: 172125: 54b441023495b71226ffb7cf1eb80ab40436248f 172123: 2f148e11310102f4d9ec7b819ba229a9e36c502f 172119: d68e75ec46306ed9bad46a9c6fa89df952a6b71f 172111: 9602b4e8b92fee206e1e3eb05edd474356077d4b 172095: d437cf03a80a8086236ddd977efe36d5c9c380b2 v: v3 --- [refs] | 2 +- trunk/net/core/net_namespace.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 080628d39736..68db60605c5f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d79d792ef9f99cca463b6619a93e860d1c833a6e +refs/heads/master: 3a765edadb28cc736d185f67d1ba6bedcc85f4b9 diff --git a/trunk/net/core/net_namespace.c b/trunk/net/core/net_namespace.c index 4026a4cff93c..bd8c4712ea24 100644 --- a/trunk/net/core/net_namespace.c +++ b/trunk/net/core/net_namespace.c @@ -413,8 +413,11 @@ static int register_pernet_operations(struct list_head *list, } } error = __register_pernet_operations(list, ops); - if (error && ops->id) - ida_remove(&net_generic_ids, *ops->id); + if (error) { + rcu_barrier(); + if (ops->id) + ida_remove(&net_generic_ids, *ops->id); + } return error; } @@ -423,6 +426,7 @@ static void unregister_pernet_operations(struct pernet_operations *ops) { __unregister_pernet_operations(ops); + rcu_barrier(); if (ops->id) ida_remove(&net_generic_ids, *ops->id); }