summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPravin B Shelar <pshelar@nicira.com>2011-11-10 19:14:51 -0800
committerJesse Gross <jesse@nicira.com>2011-12-03 09:35:07 -0800
commit86b1309c7e411b7c25dc0dc7a092582a4d291044 (patch)
treeb2557cbe0441d1d762e87a56e105bff6581c13e9
parent263ba61d3b19508dfb003c215ec5d23f882b4f87 (diff)
downloadblackbird-op-linux-86b1309c7e411b7c25dc0dc7a092582a4d291044.tar.gz
blackbird-op-linux-86b1309c7e411b7c25dc0dc7a092582a4d291044.zip
genetlink: Add lockdep_genl_is_held().
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>
-rw-r--r--include/linux/genetlink.h3
-rw-r--r--net/netlink/genetlink.c8
2 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/genetlink.h b/include/linux/genetlink.h
index 61549b26ad6f..59311adfb0e0 100644
--- a/include/linux/genetlink.h
+++ b/include/linux/genetlink.h
@@ -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__ */
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c
index 8a36599d3555..28453ae2a97b 100644
--- a/net/netlink/genetlink.c
+++ b/net/netlink/genetlink.c
@@ -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)
OpenPOWER on IntegriCloud