From: Steven Rostedt With the current location of the tracepoints in lockdep, the system can hard lockup in minutes when the tracepoints are enabled. Moving the tracepoints outside inside the lockdep protection solves the issue. Cc: Peter Zijlstra Signed-off-by: Steven Rostedt --- kernel/lockdep.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) diff --git a/kernel/lockdep.c b/kernel/lockdep.c index 47b201e..53b887a 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c @@ -2941,11 +2941,11 @@ void lock_acquire(struct lockdep_map *lock, unsigned int subclass, { unsigned long flags; - trace_lock_acquire(lock, subclass, trylock, read, check, nest_lock, ip); - if (unlikely(current->lockdep_recursion)) return; + trace_lock_acquire(lock, subclass, trylock, read, check, nest_lock, ip); + raw_local_irq_save(flags); check_flags(flags); @@ -2962,11 +2962,11 @@ void lock_release(struct lockdep_map *lock, int nested, { unsigned long flags; - trace_lock_release(lock, nested, ip); - if (unlikely(current->lockdep_recursion)) return; + trace_lock_release(lock, nested, ip); + raw_local_irq_save(flags); check_flags(flags); current->lockdep_recursion = 1; @@ -3118,14 +3118,14 @@ void lock_contended(struct lockdep_map *lock, unsigned long ip) { unsigned long flags; + if (unlikely(current->lockdep_recursion)) + return; + trace_lock_contended(lock, ip); if (unlikely(!lock_stat)) return; - if (unlikely(current->lockdep_recursion)) - return; - raw_local_irq_save(flags); check_flags(flags); current->lockdep_recursion = 1; -- 1.6.2.1 -- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/