aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/genetlink.h8
-rw-r--r--net/netlink/genetlink.c6
2 files changed, 12 insertions, 2 deletions
diff --git a/include/linux/genetlink.h b/include/linux/genetlink.h
index b834ef6d59fa..61549b26ad6f 100644
--- a/include/linux/genetlink.h
+++ b/include/linux/genetlink.h
@@ -80,4 +80,12 @@ enum {
80 80
81#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1) 81#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
82 82
83#ifdef __KERNEL__
84
85/* All generic netlink requests are serialized by a global lock. */
86extern void genl_lock(void);
87extern void genl_unlock(void);
88
89#endif /* __KERNEL__ */
90
83#endif /* __LINUX_GENERIC_NETLINK_H */ 91#endif /* __LINUX_GENERIC_NETLINK_H */
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c
index a4b6e148c5de..a28fda7420d9 100644
--- a/net/netlink/genetlink.c
+++ b/net/netlink/genetlink.c
@@ -20,15 +20,17 @@
20 20
21static DEFINE_MUTEX(genl_mutex); /* serialization of message processing */ 21static DEFINE_MUTEX(genl_mutex); /* serialization of message processing */
22 22
23static inline void genl_lock(void) 23void genl_lock(void)
24{ 24{
25 mutex_lock(&genl_mutex); 25 mutex_lock(&genl_mutex);
26} 26}
27EXPORT_SYMBOL(genl_lock);
27 28
28static inline void genl_unlock(void) 29void genl_unlock(void)
29{ 30{
30 mutex_unlock(&genl_mutex); 31 mutex_unlock(&genl_mutex);
31} 32}
33EXPORT_SYMBOL(genl_unlock);
32 34
33#define GENL_FAM_TAB_SIZE 16 35#define GENL_FAM_TAB_SIZE 16
34#define GENL_FAM_TAB_MASK (GENL_FAM_TAB_SIZE - 1) 36#define GENL_FAM_TAB_MASK (GENL_FAM_TAB_SIZE - 1)