forked from Minki/linux
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
This commit is contained in:
commit
bf20753c0c
@ -2,12 +2,19 @@
|
||||
#define __LINUX_DEBUG_LOCKING_H
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <asm/atomic.h>
|
||||
|
||||
struct task_struct;
|
||||
|
||||
extern int debug_locks;
|
||||
extern int debug_locks_silent;
|
||||
|
||||
|
||||
static inline int __debug_locks_off(void)
|
||||
{
|
||||
return xchg(&debug_locks, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Generic 'turn off all lock debugging' function:
|
||||
*/
|
||||
|
@ -213,8 +213,16 @@ unsigned long get_taint(void)
|
||||
|
||||
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);
|
||||
}
|
||||
EXPORT_SYMBOL(add_taint);
|
||||
|
@ -36,7 +36,7 @@ int debug_locks_silent;
|
||||
*/
|
||||
int debug_locks_off(void)
|
||||
{
|
||||
if (xchg(&debug_locks, 0)) {
|
||||
if (__debug_locks_off()) {
|
||||
if (!debug_locks_silent) {
|
||||
oops_in_progress = 1;
|
||||
console_verbose();
|
||||
|
Loading…
Reference in New Issue
Block a user