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
|
#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)
|
|||||||
|
|
||||||
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;
|
|||||||
*/
|
*/
|
||||||
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();
|
||||||
|
Loading…
Reference in New Issue
Block a user