kernel_optimize_test/arch/sh
Josh Poimboeuf 325cdacd03 debug: Fix WARN_ON_ONCE() for modules
Mike Galbraith reported a situation where a WARN_ON_ONCE() call in DRM
code turned into an oops.  As it turns out, WARN_ON_ONCE() seems to be
completely broken when called from a module.

The bug was introduced with the following commit:

  19d436268d ("debug: Add _ONCE() logic to report_bug()")

That commit changed WARN_ON_ONCE() to move its 'once' logic into the bug
trap handler.  It requires a writable bug table so that the BUGFLAG_DONE
bit can be written to the flags to indicate the first warning has
occurred.

The bug table was made writable for vmlinux, which relies on
vmlinux.lds.S and vmlinux.lds.h for laying out the sections.  However,
it wasn't made writable for modules, which rely on the ELF section
header flags.

Reported-by: Mike Galbraith <efault@gmx.de>
Tested-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Fixes: 19d436268d ("debug: Add _ONCE() logic to report_bug()")
Link: http://lkml.kernel.org/r/a53b04235a65478dd9afc51f5b329fdc65c84364.1500095401.git.jpoimboe@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2017-07-20 12:31:04 +02:00
..
boards clocksource/drivers: Rename CLKSRC_OF to TIMER_OF 2017-06-14 12:01:03 +02:00
boot treewide: Remove remaining executable attributes from source files 2017-02-25 12:12:50 -08:00
cchips genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
configs cpufreq: Remove CONFIG_CPU_FREQ_STAT_DETAILS config option 2017-02-03 23:59:39 +01:00
drivers sh/PCI: Use generic pci_mmap_resource_range() 2017-04-20 08:47:47 -05:00
include debug: Fix WARN_ON_ONCE() for modules 2017-07-20 12:31:04 +02:00
kernel sched/headers: Move task_struct::signal and task_struct::sighand types and accessors into <linux/sched/signal.h> 2017-03-03 01:43:37 +01:00
lib sh: New gcc support 2016-03-17 19:45:44 +00:00
lib64 sh64: Kill off old exception debugging helpers. 2012-06-14 14:12:18 +09:00
math-emu sched/headers: Prepare for new header dependencies before moving code to <linux/sched/signal.h> 2017-03-02 08:42:29 +01:00
mm mm: larger stack guard gap, between vmas 2017-06-19 21:50:20 +08:00
oprofile Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
tools
Kconfig CONFIG_ARCH_HAS_RAW_COPY_USER is unconditional now 2017-04-26 12:11:01 -04:00
Kconfig.cpu arch/sh: remove depends on CONFIG_EXPERIMENTAL 2013-01-21 14:43:13 -08:00
Kconfig.debug
Makefile sh: Use full path in KBUILD_IMAGE definition 2017-03-20 22:42:20 +09:00