Commit bf20753c authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'core-fixes-for-linus' of...

Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  lockdep: continue lock debugging despite some taints
  lockdep: warn about lockdep disabling after kernel taint
parents 01599fca 574bbe78
...@@ -2,12 +2,19 @@ ...@@ -2,12 +2,19 @@
#define __LINUX_DEBUG_LOCKING_H #define __LINUX_DEBUG_LOCKING_H
#include <linux/kernel.h> #include <linux/kernel.h>
#include <asm/atomic.h>
struct task_struct; struct task_struct;
extern int debug_locks; extern int debug_locks;
extern int debug_locks_silent; extern int debug_locks_silent;
static inline int __debug_locks_off(void)
{
return xchg(&debug_locks, 0);
}
/* /*
* Generic 'turn off all lock debugging' function: * Generic 'turn off all lock debugging' function:
*/ */
......
...@@ -213,8 +213,16 @@ unsigned long get_taint(void) ...@@ -213,8 +213,16 @@ unsigned long get_taint(void)
void add_taint(unsigned flag) void add_taint(unsigned flag)
{ {
/* can't trust the integrity of the kernel anymore: */ /*
debug_locks = 0; * Can't trust the integrity of the kernel anymore.
* We don't call directly debug_locks_off() because the issue
* is not necessarily serious enough to set oops_in_progress to 1
* Also we want to keep up lockdep for staging development and
* post-warning case.
*/
if (flag != TAINT_CRAP && flag != TAINT_WARN && __debug_locks_off())
printk(KERN_WARNING "Disabling lockdep due to kernel taint\n");
set_bit(flag, &tainted_mask); set_bit(flag, &tainted_mask);
} }
EXPORT_SYMBOL(add_taint); EXPORT_SYMBOL(add_taint);
......
...@@ -36,7 +36,7 @@ int debug_locks_silent; ...@@ -36,7 +36,7 @@ int debug_locks_silent;
*/ */
int debug_locks_off(void) int debug_locks_off(void)
{ {
if (xchg(&debug_locks, 0)) { if (__debug_locks_off()) {
if (!debug_locks_silent) { if (!debug_locks_silent) {
oops_in_progress = 1; oops_in_progress = 1;
console_verbose(); console_verbose();
......
Markdown is supported
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