lockdep: update lockdep_recursion on graph_lock
With the introduction of ftrace, it is possible to recurse into the lockdep functions via the mcount call. To prevent possible lockups, updating the lockdep_recursion counter on grabbing the internal lockdep_lock should prevent deadlocks. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
a98a3c3fde
commit
bb065afb8e
1 changed files with 3 additions and 0 deletions
|
@ -82,6 +82,8 @@ static int graph_lock(void)
|
|||
__raw_spin_unlock(&lockdep_lock);
|
||||
return 0;
|
||||
}
|
||||
/* prevent any recursions within lockdep from causing deadlocks */
|
||||
current->lockdep_recursion++;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -90,6 +92,7 @@ static inline int graph_unlock(void)
|
|||
if (debug_locks && !__raw_spin_is_locked(&lockdep_lock))
|
||||
return DEBUG_LOCKS_WARN_ON(1);
|
||||
|
||||
current->lockdep_recursion--;
|
||||
__raw_spin_unlock(&lockdep_lock);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue