aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorDaniel Lezcano <dlezcano@fr.ibm.com>2007-10-30 18:38:57 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-31 00:16:21 -0400
commit310928d9633b04866a47f07eb43c498b2d82ebcb (patch)
treee07712c96ef555b73d9d93b749056ddd053b86c8 /net
parent93ee31f14f6f7b5b427c2fdc715d5571eb0be9e5 (diff)
[NETNS]: fix net released by rcu callback
When a network namespace reference is held by a network subsystem, and when this reference is decremented in a rcu update callback, we must ensure that there is no more outstanding rcu update before trying to free the network namespace. In the normal case, the rcu_barrier is called when the network namespace is exiting in the cleanup_net function. But when a network namespace creation fails, and the subsystems are undone (like the cleanup), the rcu_barrier is missing. This patch adds the missing rcu_barrier. Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/core/net_namespace.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index 6f71db8c4428..662e6ea1cecf 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -112,6 +112,8 @@ out_undo:
112 if (ops->exit) 112 if (ops->exit)
113 ops->exit(net); 113 ops->exit(net);
114 } 114 }
115
116 rcu_barrier();
115 goto out; 117 goto out;
116} 118}
117 119