diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-07-05 11:11:26 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-07-05 11:11:26 -0700 | 
| commit | eed1fc87795362fd868bdc960d7b96d25f81eae3 (patch) | |
| tree | c9299d4ea8c79a42ea48510d168ae40597d4bcc5 /lib/nmi_backtrace.c | |
| parent | 19964541c23156cc8f814a2137df6b833ccdbf12 (diff) | |
| parent | a5707eef798b57ff5a2e56fca435dff616019b7e (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk
Pull printk updates from Petr Mladek:
 - Store printk() messages into the main log buffer directly even in NMI
   when the lock is available. It is the best effort to print even large
   chunk of text. It is handy, for example, when all ftrace messages are
   printed during the system panic in NMI.
 - Add missing annotations to calm down compiler warnings
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk:
  printk: add __printf attributes to internal functions
  printk: Use the main logbuf in NMI when logbuf_lock is available
Diffstat (limited to 'lib/nmi_backtrace.c')
| -rw-r--r-- | lib/nmi_backtrace.c | 3 | 
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/nmi_backtrace.c b/lib/nmi_backtrace.c index 4e8a30d1c22f..0bc0a3535a8a 100644 --- a/lib/nmi_backtrace.c +++ b/lib/nmi_backtrace.c @@ -86,9 +86,11 @@ void nmi_trigger_cpumask_backtrace(const cpumask_t *mask,  bool nmi_cpu_backtrace(struct pt_regs *regs)  { +	static arch_spinlock_t lock = __ARCH_SPIN_LOCK_UNLOCKED;  	int cpu = smp_processor_id();  	if (cpumask_test_cpu(cpu, to_cpumask(backtrace_mask))) { +		arch_spin_lock(&lock);  		if (regs && cpu_in_idle(instruction_pointer(regs))) {  			pr_warn("NMI backtrace for cpu %d skipped: idling at pc %#lx\n",  				cpu, instruction_pointer(regs)); @@ -99,6 +101,7 @@ bool nmi_cpu_backtrace(struct pt_regs *regs)  			else  				dump_stack();  		} +		arch_spin_unlock(&lock);  		cpumask_clear_cpu(cpu, to_cpumask(backtrace_mask));  		return true;  	}  | 
