Skip to contentSkip to conversation

fix net released by rcu callback

PATCH New Daniel Lezcano 1 participant 1 message Oct 30, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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.

---
 net/core/net_namespace.c |    2 ++
 1 file changed, 2 insertions(+)
net/core/net_namespace.c +2 -0
Index: net-2.6/net/core/net_namespace.c
===================================================================
@@ -112,6 +112,8 @@ out_undo:
                if (ops->exit)
                        ops->exit(net);
        }
+
+       rcu_barrier();
        goto out;
 }