For many reasons, debug_locks_off() is called to stop lock debuging feature e.g. on panic(). dept should also stop it in the conditions.
Signed-off-by: Byungchul Park <byungc...@sk.com> --- include/linux/dept.h | 2 ++ kernel/dependency/dept.c | 6 ++++++ lib/debug_locks.c | 2 ++ 3 files changed, 10 insertions(+) diff --git a/include/linux/dept.h b/include/linux/dept.h index 8b4d97fc4627..b164f74e86e5 100644 --- a/include/linux/dept.h +++ b/include/linux/dept.h @@ -390,6 +390,7 @@ struct dept_ext_wgen { unsigned int wgen; }; +extern void dept_stop_emerg(void); extern void dept_on(void); extern void dept_off(void); extern void dept_init(void); @@ -442,6 +443,7 @@ struct dept_ext_wgen { }; #define DEPT_MAP_INITIALIZER(n, k) { } +#define dept_stop_emerg() do { } while (0) #define dept_on() do { } while (0) #define dept_off() do { } while (0) #define dept_init() do { } while (0) diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c index b154c1bb4ee5..b5ba6d939932 100644 --- a/kernel/dependency/dept.c +++ b/kernel/dependency/dept.c @@ -187,6 +187,12 @@ static void dept_unlock(void) arch_spin_unlock(&dept_spin); } +void dept_stop_emerg(void) +{ + WRITE_ONCE(dept_stop, 1); +} +EXPORT_SYMBOL_GPL(dept_stop_emerg); + enum bfs_ret { BFS_CONTINUE, BFS_DONE, diff --git a/lib/debug_locks.c b/lib/debug_locks.c index a75ee30b77cb..14a965914a8f 100644 --- a/lib/debug_locks.c +++ b/lib/debug_locks.c @@ -38,6 +38,8 @@ EXPORT_SYMBOL_GPL(debug_locks_silent); */ int debug_locks_off(void) { + dept_stop_emerg(); + if (debug_locks && __debug_locks_off()) { if (!debug_locks_silent) { console_verbose(); -- 2.17.1