summaryrefslogtreecommitdiffstats
path: root/kernel/exec_domain.c
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2015-04-15 17:11:57 +0200
committerIngo Molnar <mingo@kernel.org>2015-04-17 09:42:14 +0200
commitd7bc3197b41e0a1af6677e83f8736e93a1575ce0 (patch)
tree8b9dbb106e7c287182b3812c0469a1fea8e46c95 /kernel/exec_domain.c
parentMerge branch 'x86-vdso-for-linus' of git://git.kernel.org/pub/scm/linux/kerne... (diff)
downloadlinux-d7bc3197b41e0a1af6677e83f8736e93a1575ce0.tar.xz
linux-d7bc3197b41e0a1af6677e83f8736e93a1575ce0.zip
lockdep: Make print_lock() robust against concurrent release
During sysrq's show-held-locks command it is possible that hlock_class() returns NULL for a given lock. The result is then (after the warning): |BUG: unable to handle kernel NULL pointer dereference at 0000001c |IP: [<c1088145>] get_usage_chars+0x5/0x100 |Call Trace: | [<c1088263>] print_lock_name+0x23/0x60 | [<c1576b57>] print_lock+0x5d/0x7e | [<c1088314>] lockdep_print_held_locks+0x74/0xe0 | [<c1088652>] debug_show_all_locks+0x132/0x1b0 | [<c1315c48>] sysrq_handle_showlocks+0x8/0x10 This *might* happen because the thread on the other CPU drops the lock after we are looking ->lockdep_depth and ->held_locks points no longer to a lock that is held. The fix here is to simply ignore it and continue. Reported-by: Andreas Messerschmid <andreas@linutronix.de> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/exec_domain.c')
0 files changed, 0 insertions, 0 deletions