Commit bb065afb authored by Steven Rostedt's avatar Steven Rostedt Committed by Thomas Gleixner
Browse files

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: default avatarSteven Rostedt <srostedt@redhat.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent a98a3c3f
...@@ -82,6 +82,8 @@ static int graph_lock(void) ...@@ -82,6 +82,8 @@ static int graph_lock(void)
__raw_spin_unlock(&lockdep_lock); __raw_spin_unlock(&lockdep_lock);
return 0; return 0;
} }
/* prevent any recursions within lockdep from causing deadlocks */
current->lockdep_recursion++;
return 1; return 1;
} }
...@@ -90,6 +92,7 @@ static inline int graph_unlock(void) ...@@ -90,6 +92,7 @@ static inline int graph_unlock(void)
if (debug_locks && !__raw_spin_is_locked(&lockdep_lock)) if (debug_locks && !__raw_spin_is_locked(&lockdep_lock))
return DEBUG_LOCKS_WARN_ON(1); return DEBUG_LOCKS_WARN_ON(1);
current->lockdep_recursion--;
__raw_spin_unlock(&lockdep_lock); __raw_spin_unlock(&lockdep_lock);
return 0; return 0;
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment