genetlink: Add lockdep_genl_is_held().
authorPravin B Shelar <pshelar@nicira.com>
Fri, 11 Nov 2011 03:14:51 +0000 (19:14 -0800)
committerJesse Gross <jesse@nicira.com>
Sat, 3 Dec 2011 17:35:07 +0000 (09:35 -0800)
Open vSwitch uses genl_mutex locking to protect datapath
data-structures like flow-table, flow-actions. Following patch adds
lockdep_genl_is_held() which is used for rcu annotation to prove
locking.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
include/linux/genetlink.h
net/netlink/genetlink.c

index 61549b26ad6f4dd114250ac00b170a1f734fd21b..59311adfb0e013176d26b5a71c34a347852f4ce2 100644 (file)
@@ -85,6 +85,9 @@ enum {
 /* All generic netlink requests are serialized by a global lock.  */
 extern void genl_lock(void);
 extern void genl_unlock(void);
+#ifdef CONFIG_PROVE_LOCKING
+extern int lockdep_genl_is_held(void);
+#endif
 
 #endif /* __KERNEL__ */
 
index 8a36599d35550e237b317d228b4c7839ca1e4ff7..28453ae2a97b00b85eef3b765caf64d022c13bea 100644 (file)
@@ -33,6 +33,14 @@ void genl_unlock(void)
 }
 EXPORT_SYMBOL(genl_unlock);
 
+#ifdef CONFIG_PROVE_LOCKING
+int lockdep_genl_is_held(void)
+{
+       return lockdep_is_held(&genl_mutex);
+}
+EXPORT_SYMBOL(lockdep_genl_is_held);
+#endif
+
 #define GENL_FAM_TAB_SIZE      16
 #define GENL_FAM_TAB_MASK      (GENL_FAM_TAB_SIZE - 1)