Skip to content

Commit

Permalink
lockdep: remove task argument from debug_check_no_locks_held
Browse files Browse the repository at this point in the history
The only existing caller to debug_check_no_locks_held calls it
with 'current' as the task, and the freezer needs to call
debug_check_no_locks_held but doesn't already have a current
task pointer, so remove the argument.  It is already assuming
that the current task is relevant by dumping the current stack
trace as part of the warning.

This was originally part of 6aa9707 (lockdep: check that
no locks held at freeze time) which was reverted in
dbf520a.

Original-author: Mandeep Singh Baines <msb@chromium.org>
Acked-by: Pavel Machek <pavel@ucw.cz>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Colin Cross <ccross@android.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Colin Cross authored and Rafael J. Wysocki committed May 12, 2013
1 parent 5853cc2 commit 1b1d2fb
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 12 deletions.
4 changes: 2 additions & 2 deletions include/linux/debug_locks.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ struct task_struct;
extern void debug_show_all_locks(void);
extern void debug_show_held_locks(struct task_struct *task);
extern void debug_check_no_locks_freed(const void *from, unsigned long len);
extern void debug_check_no_locks_held(struct task_struct *task);
extern void debug_check_no_locks_held(void);
#else
static inline void debug_show_all_locks(void)
{
Expand All @@ -67,7 +67,7 @@ debug_check_no_locks_freed(const void *from, unsigned long len)
}

static inline void
debug_check_no_locks_held(struct task_struct *task)
debug_check_no_locks_held(void)
{
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion kernel/exit.c
Original file line number Diff line number Diff line change
Expand Up @@ -835,7 +835,7 @@ void do_exit(long code)
/*
* Make sure we are holding no locks:
*/
debug_check_no_locks_held(tsk);
debug_check_no_locks_held();
/*
* We can do this unlocked here. The futex code uses this flag
* just to verify whether the pi state cleanup has been done
Expand Down
17 changes: 8 additions & 9 deletions kernel/lockdep.c
Original file line number Diff line number Diff line change
Expand Up @@ -4090,7 +4090,7 @@ void debug_check_no_locks_freed(const void *mem_from, unsigned long mem_len)
}
EXPORT_SYMBOL_GPL(debug_check_no_locks_freed);

static void print_held_locks_bug(struct task_struct *curr)
static void print_held_locks_bug(void)
{
if (!debug_locks_off())
return;
Expand All @@ -4099,22 +4099,21 @@ static void print_held_locks_bug(struct task_struct *curr)

printk("\n");
printk("=====================================\n");
printk("[ BUG: lock held at task exit time! ]\n");
printk("[ BUG: %s/%d still has locks held! ]\n",
current->comm, task_pid_nr(current));
print_kernel_ident();
printk("-------------------------------------\n");
printk("%s/%d is exiting with locks still held!\n",
curr->comm, task_pid_nr(curr));
lockdep_print_held_locks(curr);

lockdep_print_held_locks(current);
printk("\nstack backtrace:\n");
dump_stack();
}

void debug_check_no_locks_held(struct task_struct *task)
void debug_check_no_locks_held(void)
{
if (unlikely(task->lockdep_depth > 0))
print_held_locks_bug(task);
if (unlikely(current->lockdep_depth > 0))
print_held_locks_bug();
}
EXPORT_SYMBOL_GPL(debug_check_no_locks_held);

void debug_show_all_locks(void)
{
Expand Down

0 comments on commit 1b1d2fb

Please sign in to comment.