On Tue, Jul 01, 2014 at 12:03:35PM +0200, Peter Zijlstra wrote: > On Mon, Jun 30, 2014 at 11:49:40AM -0400, Jeff Layton wrote: > > We currently have the ability to call lockdep_assert_held to throw a > > warning when a spinlock isn't held in a codepath. There are also times > > when we'd like to throw a warning when a lock is held (i.e. when there > > is the potential for deadlock with atomic_dec_and_lock or similar). > > So I'm not getting it; if there's deadlock potential, lockdep would > already report so, right? > > That is, lockdep is very good a yelling when you try to acquire a lock > you're already holding. Ah, I think I see what you're trying to do. You're wanting to use might_lock() and might_lock_read(). Which are used to make conditional lock acquisitions unconditional, so as to more reliably trigger the deadlock detection.