diff options
-rw-r--r-- | net/netlink/af_netlink.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 7b73c7c161a9..596eaff66649 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c | |||
@@ -96,6 +96,44 @@ EXPORT_SYMBOL_GPL(nl_table); | |||
96 | 96 | ||
97 | static DECLARE_WAIT_QUEUE_HEAD(nl_table_wait); | 97 | static DECLARE_WAIT_QUEUE_HEAD(nl_table_wait); |
98 | 98 | ||
99 | static struct lock_class_key nlk_cb_mutex_keys[MAX_LINKS]; | ||
100 | |||
101 | static const char *const nlk_cb_mutex_key_strings[MAX_LINKS + 1] = { | ||
102 | "nlk_cb_mutex-ROUTE", | ||
103 | "nlk_cb_mutex-1", | ||
104 | "nlk_cb_mutex-USERSOCK", | ||
105 | "nlk_cb_mutex-FIREWALL", | ||
106 | "nlk_cb_mutex-SOCK_DIAG", | ||
107 | "nlk_cb_mutex-NFLOG", | ||
108 | "nlk_cb_mutex-XFRM", | ||
109 | "nlk_cb_mutex-SELINUX", | ||
110 | "nlk_cb_mutex-ISCSI", | ||
111 | "nlk_cb_mutex-AUDIT", | ||
112 | "nlk_cb_mutex-FIB_LOOKUP", | ||
113 | "nlk_cb_mutex-CONNECTOR", | ||
114 | "nlk_cb_mutex-NETFILTER", | ||
115 | "nlk_cb_mutex-IP6_FW", | ||
116 | "nlk_cb_mutex-DNRTMSG", | ||
117 | "nlk_cb_mutex-KOBJECT_UEVENT", | ||
118 | "nlk_cb_mutex-GENERIC", | ||
119 | "nlk_cb_mutex-17", | ||
120 | "nlk_cb_mutex-SCSITRANSPORT", | ||
121 | "nlk_cb_mutex-ECRYPTFS", | ||
122 | "nlk_cb_mutex-RDMA", | ||
123 | "nlk_cb_mutex-CRYPTO", | ||
124 | "nlk_cb_mutex-SMC", | ||
125 | "nlk_cb_mutex-23", | ||
126 | "nlk_cb_mutex-24", | ||
127 | "nlk_cb_mutex-25", | ||
128 | "nlk_cb_mutex-26", | ||
129 | "nlk_cb_mutex-27", | ||
130 | "nlk_cb_mutex-28", | ||
131 | "nlk_cb_mutex-29", | ||
132 | "nlk_cb_mutex-30", | ||
133 | "nlk_cb_mutex-31", | ||
134 | "nlk_cb_mutex-MAX_LINKS" | ||
135 | }; | ||
136 | |||
99 | static int netlink_dump(struct sock *sk); | 137 | static int netlink_dump(struct sock *sk); |
100 | static void netlink_skb_destructor(struct sk_buff *skb); | 138 | static void netlink_skb_destructor(struct sk_buff *skb); |
101 | 139 | ||
@@ -585,6 +623,9 @@ static int __netlink_create(struct net *net, struct socket *sock, | |||
585 | } else { | 623 | } else { |
586 | nlk->cb_mutex = &nlk->cb_def_mutex; | 624 | nlk->cb_mutex = &nlk->cb_def_mutex; |
587 | mutex_init(nlk->cb_mutex); | 625 | mutex_init(nlk->cb_mutex); |
626 | lockdep_set_class_and_name(nlk->cb_mutex, | ||
627 | nlk_cb_mutex_keys + protocol, | ||
628 | nlk_cb_mutex_key_strings[protocol]); | ||
588 | } | 629 | } |
589 | init_waitqueue_head(&nlk->wait); | 630 | init_waitqueue_head(&nlk->wait); |
590 | 631 | ||