On Tue, 6 Dec 2011, tip-bot for Yong Zhang wrote: > Commit-ID: d3d03d4fc5b1bec3a579112de170a9676e9d97cb > Gitweb: http://git.kernel.org/tip/d3d03d4fc5b1bec3a579112de170a9676e9d97cb > Author: Yong Zhang <yong.zhang0@xxxxxxxxx> > AuthorDate: Wed, 9 Nov 2011 16:04:51 +0800 > Committer: Ingo Molnar <mingo@xxxxxxx> > CommitDate: Tue, 6 Dec 2011 08:16:51 +0100 > > lockdep, kmemcheck: Annotate ->lock in lockdep_init_map() > > Since commit f59de89 ("lockdep: Clear whole lockdep_map on initialization"), > lockdep_init_map() will clear all the struct. But it will break > lock_set_class()/lock_set_subclass(). A typical race condition > is like below: > > CPU A CPU B > lock_set_subclass(lockA); > lock_set_class(lockA); > lockdep_init_map(lockA); > /* lockA->name is cleared */ > memset(lockA); > __lock_acquire(lockA); > /* lockA->class_cache[] is cleared */ > register_lock_class(lockA); > look_up_lock_class(lockA); > WARN_ON_ONCE(class->name != > lock->name); > > lock->name = name; > > So restore to what we have done before commit f59de89 but annotate > ->lock with kmemcheck_mark_initialized() to suppress the kmemcheck > warning reported in commit f59de89. > > Reported-by: Sergey Senozhatsky <sergey.senozhatsky@xxxxxxxxx> > Reported-by: Borislav Petkov <bp@xxxxxxxxx> > Suggested-by: Vegard Nossum <vegard.nossum@xxxxxxxxx> > Signed-off-by: Yong Zhang <yong.zhang0@xxxxxxxxx> > Cc: Tejun Heo <tj@xxxxxxxxxx> > Cc: David Rientjes <rientjes@xxxxxxxxxx> Acked-by: David Rientjes <rientjes@xxxxxxxxxx> > Signed-off-by: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> > Link: http://lkml.kernel.org/r/20111109080451.GB8124@zhy > Signed-off-by: Ingo Molnar <mingo@xxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html