• Bart Van Assche's avatar
    locking/lockdep: Add support for dynamic keys · 108c1485
    Bart Van Assche authored
    A shortcoming of the current lockdep implementation is that it requires
    lock keys to be allocated statically. That forces all instances of lock
    objects that occur in a given data structure to share a lock key. Since
    lock dependency analysis groups lock objects per key sharing lock keys
    can cause false positive lockdep reports. Make it possible to avoid
    such false positive reports by allowing lock keys to be allocated
    dynamically. Require that dynamically allocated lock keys are
    registered before use by calling lockdep_register_key(). Complain about
    attempts to register the same lock key pointer twice without calling
    lockdep_unregister_key() between successive registration calls.
    
    The purpose of the new lock_keys_hash[] data structure that keeps
    track of all dynamic keys is twofold:
    
      - Verify whether the lockdep_register_key() and lockdep_unregister_key()
        functions are used correctly.
    
      - Avoid that lockdep_init_map() complains when encountering a dynamically
        allocated key.
    Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Johannes Berg <johannes@sipsolutions.net>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Waiman Long <longman@redhat.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: johannes.berg@intel.com
    Cc: tj@kernel.org
    Link: https://lkml.kernel.org/r/20190214230058.196511-19-bvanassche@acm.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    108c1485
lockdep.c 126 KB