[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>

authored by Ingo Molnar and committed by Linus Torvalds 99a3eb38 d907dd2e

+5 -2
+5 -2
include/linux/seqlock.h
··· 44 44 #define SEQLOCK_UNLOCKED \ 45 45 __SEQLOCK_UNLOCKED(old_style_seqlock_init) 46 46 47 - #define seqlock_init(x) \ 48 - do { *(x) = (seqlock_t) __SEQLOCK_UNLOCKED(x); } while (0) 47 + #define seqlock_init(x) \ 48 + do { \ 49 + (x)->sequence = 0; \ 50 + spin_lock_init(&(x)->lock); \ 51 + } while (0) 49 52 50 53 #define DEFINE_SEQLOCK(x) \ 51 54 seqlock_t x = __SEQLOCK_UNLOCKED(x)