[ovs-dev] [PATCH 17/19] datapath: dp_sysfs_add_dp() needs RTNL lock.

Jesse Gross jesse at nicira.com
Thu Dec 9 06:14:15 UTC 2010


We currently drop RTNL before adding a new datapath to sysfs but
then access the dp data structures.  This moves the call to
dp_sysfs_add_dp() before we drop the locks to prevent a potential
race.  All other calls to sysfs functions already hold RTNL.

Found with lockdep.

Signed-off-by: Jesse Gross <jesse at nicira.com>
---
 datapath/datapath.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/datapath/datapath.c b/datapath/datapath.c
index 65d25c2..08e7450 100644
--- a/datapath/datapath.c
+++ b/datapath/datapath.c
@@ -267,11 +267,11 @@ static int create_dp(int dp_idx, const char __user *devnamep)
 		goto err_destroy_local_port;
 
 	rcu_assign_pointer(dps[dp_idx], dp);
+	dp_sysfs_add_dp(dp);
+
 	mutex_unlock(&dp_mutex);
 	rtnl_unlock();
 
-	dp_sysfs_add_dp(dp);
-
 	return 0;
 
 err_destroy_local_port:
-- 
1.7.1





More information about the dev mailing list