diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/lockdep.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/lockdep.c b/kernel/lockdep.c index 42ae4a5ab4dc..a6f1ee9c92d9 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c | |||
| @@ -3199,3 +3199,19 @@ void debug_show_held_locks(struct task_struct *task) | |||
| 3199 | } | 3199 | } |
| 3200 | 3200 | ||
| 3201 | EXPORT_SYMBOL_GPL(debug_show_held_locks); | 3201 | EXPORT_SYMBOL_GPL(debug_show_held_locks); |
| 3202 | |||
| 3203 | void lockdep_sys_exit(void) | ||
| 3204 | { | ||
| 3205 | struct task_struct *curr = current; | ||
| 3206 | |||
| 3207 | if (unlikely(curr->lockdep_depth)) { | ||
| 3208 | if (!debug_locks_off()) | ||
| 3209 | return; | ||
| 3210 | printk("\n================================================\n"); | ||
| 3211 | printk( "[ BUG: lock held when returning to user space! ]\n"); | ||
| 3212 | printk( "------------------------------------------------\n"); | ||
| 3213 | printk("%s/%d is leaving the kernel with locks still held!\n", | ||
| 3214 | curr->comm, curr->pid); | ||
| 3215 | lockdep_print_held_locks(curr); | ||
| 3216 | } | ||
| 3217 | } | ||
