diff options
author | Ingo Molnar <mingo@elte.hu> | 2006-07-03 03:25:12 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-03 18:27:07 -0400 |
commit | da21f24dd73954c2ed0cd39a698e2c9916c05d71 (patch) | |
tree | 22829e3791f0602d284b8f5398526b228faa9501 /include/net | |
parent | 543655244866b8ec648fea1eb9c32a35ffba5721 (diff) |
[PATCH] lockdep: annotate sock_lock_init()
Teach special (multi-initialized, per-address-family) locking code to the lock
validator. Has no effect on non-lockdep kernels.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/sock.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/net/sock.h b/include/net/sock.h index 7b3d6b856946..83805feea880 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
@@ -80,8 +80,12 @@ typedef struct { | |||
80 | wait_queue_head_t wq; | 80 | wait_queue_head_t wq; |
81 | } socket_lock_t; | 81 | } socket_lock_t; |
82 | 82 | ||
83 | extern struct lock_class_key af_family_keys[AF_MAX]; | ||
84 | |||
83 | #define sock_lock_init(__sk) \ | 85 | #define sock_lock_init(__sk) \ |
84 | do { spin_lock_init(&((__sk)->sk_lock.slock)); \ | 86 | do { spin_lock_init(&((__sk)->sk_lock.slock)); \ |
87 | lockdep_set_class(&(__sk)->sk_lock.slock, \ | ||
88 | af_family_keys + (__sk)->sk_family); \ | ||
85 | (__sk)->sk_lock.owner = NULL; \ | 89 | (__sk)->sk_lock.owner = NULL; \ |
86 | init_waitqueue_head(&((__sk)->sk_lock.wq)); \ | 90 | init_waitqueue_head(&((__sk)->sk_lock.wq)); \ |
87 | } while(0) | 91 | } while(0) |