[PATCH] lockdep: fix seqlock_init()
seqlock_init() needs to use spin_lock_init() for dynamic locks, so that lockdep is notified about the presence of a new lock. (this is a fallout of the recent networking merge, which started using the so-far unused seqlock_init() API.) This fix solves the following lockdep-internal warning on current -git: INFO: trying to register non-static key. the code is fine but needs lockdep annotation. turning off the locking correctness validator. __lock_acquire+0x10c/0x9f9 lock_acquire+0x56/0x72 _spin_lock+0x35/0x42 neigh_destroy+0x9d/0x12e neigh_periodic_timer+0x10a/0x15c run_timer_softirq+0x126/0x18e __do_softirq+0x6b/0xe6 do_softirq+0x64/0xd2 ksoftirqd+0x82/0x138 Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
d907dd2efd
commit
99a3eb3845
|
@ -44,8 +44,11 @@ typedef struct {
|
|||
#define SEQLOCK_UNLOCKED \
|
||||
__SEQLOCK_UNLOCKED(old_style_seqlock_init)
|
||||
|
||||
#define seqlock_init(x) \
|
||||
do { *(x) = (seqlock_t) __SEQLOCK_UNLOCKED(x); } while (0)
|
||||
#define seqlock_init(x) \
|
||||
do { \
|
||||
(x)->sequence = 0; \
|
||||
spin_lock_init(&(x)->lock); \
|
||||
} while (0)
|
||||
|
||||
#define DEFINE_SEQLOCK(x) \
|
||||
seqlock_t x = __SEQLOCK_UNLOCKED(x)
|
||||
|
|
Loading…
Reference in New Issue