diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index 55cffad2f328349f8c5363a89a55f0e503beba85..55151faaf90c1793c53e38bed732ff3c5bd53397 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -341,8 +341,8 @@ int register_pernet_gen_subsys(int *id, struct pernet_operations *ops)
 	rv = register_pernet_operations(first_device, ops);
 	if (rv < 0)
 		ida_remove(&net_generic_ids, *id);
-	mutex_unlock(&net_mutex);
 out:
+	mutex_unlock(&net_mutex);
 	return rv;
 }
 EXPORT_SYMBOL_GPL(register_pernet_gen_subsys);