lkml.org 
[lkml]   [2011]   [Jun]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [debug patch] printk: Add a printk killswitch to robustify NMI watchdog messages

* Peter Zijlstra <peterz@infradead.org> wrote:

> On Mon, 2011-06-06 at 15:10 +0200, Ingo Molnar wrote:
>
>
> > diff --git a/kernel/printk.c b/kernel/printk.c
> > index 3518539..1b9d2be 100644
> > --- a/kernel/printk.c
> > +++ b/kernel/printk.c
> > @@ -859,7 +859,6 @@ asmlinkage int vprintk(const char *fmt, va_list args)
> > zap_locks();
> > }
> >
> > - lockdep_off();
>
> At the very least you should also do: s/raw_local_irq_/local_irq/ on
> this function.

Right, i've also removed the preempt_disable()/enable() pair - that
looks superfluous.

Updated patch below - still untested.

Thanks,

Ingo

---
kernel/printk.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)

Index: tip/kernel/printk.c
===================================================================
--- tip.orig/kernel/printk.c
+++ tip/kernel/printk.c
@@ -836,9 +836,8 @@ asmlinkage int vprintk(const char *fmt,
boot_delay_msec();
printk_delay();

- preempt_disable();
/* This stops the holder of console_sem just where we want him */
- raw_local_irq_save(flags);
+ local_irq_save(flags);
this_cpu = smp_processor_id();

/*
@@ -859,7 +858,6 @@ asmlinkage int vprintk(const char *fmt,
zap_locks();
}

- lockdep_off();
spin_lock(&logbuf_lock);
printk_cpu = this_cpu;

@@ -947,7 +945,7 @@ asmlinkage int vprintk(const char *fmt,
* Try to acquire and then immediately release the
* console semaphore. The release will do all the
* actual magic (print out buffers, wake up klogd,
- * etc).
+ * etc).
*
* The console_trylock_for_printk() function
* will release 'logbuf_lock' regardless of whether it
@@ -956,11 +954,9 @@ asmlinkage int vprintk(const char *fmt,
if (console_trylock_for_printk(this_cpu))
console_unlock();

- lockdep_on();
out_restore_irqs:
- raw_local_irq_restore(flags);
+ local_irq_restore(flags);

- preempt_enable();
return printed_len;
}
EXPORT_SYMBOL(printk);

\
 
 \ /
  Last update: 2011-06-06 15:25    [W:0.174 / U:0.188 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site