• Bart Van Assche's avatar
    locking/lockdep: Free lock classes that are no longer in use · a0b0fd53
    Bart Van Assche authored
    Instead of leaving lock classes that are no longer in use in the
    lock_classes array, reuse entries from that array that are no longer in
    use. Maintain a linked list of free lock classes with list head
    'free_lock_class'. Only add freed lock classes to the free_lock_classes
    list after a grace period to avoid that a lock_classes[] element would
    be reused while an RCU reader is accessing it. Since the lockdep
    selftests run in a context where sleeping is not allowed and since the
    selftests require that lock resetting/zapping works with debug_locks
    off, make the behavior of lockdep_free_key_range() and
    lockdep_reset_lock() depend on whether or not these are called from
    the context of the lockdep selftests.
    
    Thanks to Peter for having shown how to modify get_pending_free()
    such that that function does not have to sleep.
    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-12-bvanassche@acm.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    a0b0fd53
lockdep.c 118 KB