• Oleg Nesterov's avatar
    percpu_rw_semaphore: add lockdep annotations · 8ebe3473
    Oleg Nesterov authored
    Add lockdep annotations.  Not only this can help to find the potential
    problems, we do not want the false warnings if, say, the task takes two
    different percpu_rw_semaphore's for reading.  IOW, at least ->rw_sem
    should not use a single class.
    
    This patch exposes this internal lock to lockdep so that it represents the
    whole percpu_rw_semaphore.  This way we do not need to add another "fake"
    ->lockdep_map and lock_class_key.  More importantly, this also makes the
    output from lockdep much more understandable if it finds the problem.
    
    In short, with this patch from lockdep pov percpu_down_read() and
    percpu_up_read() acquire/release ->rw_sem for reading, this matches the
    actual semantics.  This abuses __up_read() but I hope this is fine and in
    fact I'd like to have down_read_no_lockdep() as well,
    percpu_down_read_recursive_readers() will need it.
    Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
    Cc: Anton Arapov <anton@redhat.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Michal Marek <mmarek@suse.cz>
    Cc: Mikulas Patocka <mpatocka@redhat.com>
    Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    8ebe3473
percpu-rwsem.c 4.99 KB