diff --git a/kernel/panic.c b/kernel/panic.c
index 940ca14f6dbfa211ad0f2768248f371a2f5e36d7..934fb377f4b328a4821e56a23051ca330647e74e 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -217,8 +217,10 @@ void add_taint(unsigned flag)
 	 * 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 (__debug_locks_off())
+	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);