From: Frederic Weisbecker <fweisbec@gmail.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@redhat.com,
fweisbec@gmail.com, peterz@infradead.org, tglx@linutronix.de,
mingo@elte.hu
Subject: [tip:core/urgent] lockdep: warn about lockdep disabling after kernel taint
Date: Sun, 12 Apr 2009 14:45:35 GMT [thread overview]
Message-ID: <tip-9eeba6138cefc0435695463ddadb0d95e0a6bcd2@git.kernel.org> (raw)
In-Reply-To: <1239412638-6739-1-git-send-email-fweisbec@gmail.com>
Commit-ID: 9eeba6138cefc0435695463ddadb0d95e0a6bcd2
Gitweb: http://git.kernel.org/tip/9eeba6138cefc0435695463ddadb0d95e0a6bcd2
Author: Frederic Weisbecker <fweisbec@gmail.com>
AuthorDate: Sat, 11 Apr 2009 03:17:17 +0200
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Sun, 12 Apr 2009 16:10:51 +0200
lockdep: warn about lockdep disabling after kernel taint
Impact: provide useful missing info for developers
Kernel taint can occur in several situations such as warnings,
load of prorietary or staging modules, bad page, etc...
But when such taint happens, a developer might still be working on
the kernel, expecting that lockdep is still enabled. But a taint
disables lockdep without ever warning about it.
Such a kernel behaviour doesn't really help for kernel development.
This patch adds this missing warning.
Since the taint is done most of the time after the main message that
explain the real source issue, it seems safe to warn about it inside
add_taint() so that it appears at last, without hurting the main
information.
v2: Use a generic helper to disable lockdep instead of an
open coded xchg().
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <1239412638-6739-1-git-send-email-fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
include/linux/debug_locks.h | 7 +++++++
kernel/panic.c | 10 ++++++++--
lib/debug_locks.c | 2 +-
3 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/include/linux/debug_locks.h b/include/linux/debug_locks.h
index 096476f..493dedb 100644
--- a/include/linux/debug_locks.h
+++ b/include/linux/debug_locks.h
@@ -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:
*/
diff --git a/kernel/panic.c b/kernel/panic.c
index 3fd8c5b..940ca14 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -213,8 +213,14 @@ 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
+ */
+ if (__debug_locks_off())
+ printk(KERN_WARNING "Disabling lockdep due to kernel taint\n");
+
set_bit(flag, &tainted_mask);
}
EXPORT_SYMBOL(add_taint);
diff --git a/lib/debug_locks.c b/lib/debug_locks.c
index 0218b46..bc3b117 100644
--- a/lib/debug_locks.c
+++ b/lib/debug_locks.c
@@ -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();
next prev parent reply other threads:[~2009-04-12 14:46 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-09 21:27 [PATCH 1/2] lockdep: warn about lockdep disabling after kernel taint Frederic Weisbecker
2009-04-09 21:27 ` [PATCH 2/2] lockdep: choose to continue lock debugging despite taint Frederic Weisbecker
2009-04-10 12:15 ` Ingo Molnar
2009-04-10 13:38 ` Frederic Weisbecker
2009-04-10 13:45 ` Ingo Molnar
2009-04-11 1:15 ` Frederic Weisbecker
2009-04-11 1:37 ` Frederic Weisbecker
2009-04-12 14:09 ` Ingo Molnar
2009-04-11 1:17 ` [PATCH 1/2 v2] lockdep: warn about lockdep disabling after kernel taint Frederic Weisbecker
2009-04-12 14:45 ` Frederic Weisbecker [this message]
2009-04-11 1:17 ` [PATCH 2/2 v2] lockdep: continue lock debugging despite some taints Frederic Weisbecker
2009-04-12 14:45 ` [tip:core/urgent] " Frederic Weisbecker
2009-04-10 12:12 ` [PATCH 1/2] lockdep: warn about lockdep disabling after kernel taint Ingo Molnar
2009-04-10 13:34 ` Frederic Weisbecker
2009-04-10 13:38 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tip-9eeba6138cefc0435695463ddadb0d95e0a6bcd2@git.kernel.org \
--to=fweisbec@gmail.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox