linux/arch/tile/kernel
Thomas Gleixner f2545b2d4c jump_label: Reorder hotplug lock and jump_label_lock
The conversion of the hotplug locking to a percpu rwsem unearthed lock
ordering issues all over the place.

The jump_label code has two issues:

 1) Nested get_online_cpus() invocations

 2) Ordering problems vs. the cpus rwsem and the jump_label_mutex

To cure these, the following lock order has been established;

   cpus_rwsem -> jump_label_lock -> text_mutex

Even if not all architectures need protection against CPU hotplug, taking
cpus_rwsem before jump_label_lock is now mandatory in code pathes which
actually modify code and therefor need text_mutex protection.

Move the get_online_cpus() invocations into the core jump label code and
establish the proper lock order where required.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Ingo Molnar <mingo@kernel.org>
Acked-by: "David S. Miller" <davem@davemloft.net>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Chris Metcalf <cmetcalf@mellanox.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sebastian Siewior <bigeasy@linutronix.de>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Jason Baron <jbaron@akamai.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Link: http://lkml.kernel.org/r/20170524081549.025830817@linutronix.de
2017-05-26 10:10:45 +02:00
..
vdso
asm-offsets.c
backtrace.c
compat.c
compat_signal.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h> 2017-03-02 08:42:36 +01:00
early_printk.c
entry.S
ftrace.c
hardwall.c
head_32.S
head_64.S
hvglue.S
hvglue_trace.c
intvec_32.S
intvec_64.S
irq.c
jump_label.c jump_label: Reorder hotplug lock and jump_label_lock 2017-05-26 10:10:45 +02:00
kgdb.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h> 2017-03-02 08:42:36 +01:00
kprobes.c
machine_kexec.c
Makefile
mcount_64.S
messaging.c
module.c tile-module: Rename jump labels in module_alloc() 2016-12-16 15:32:29 -05:00
pci-dma.c treewide: Constify most dma_map_ops structures 2017-01-24 12:23:35 -05:00
pci.c tile: use __ro_after_init instead of tile-specific __write_once 2016-12-16 15:32:29 -05:00
pci_gx.c
perf_event.c
pmc.c
proc.c
process.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h> 2017-03-02 08:42:36 +01:00
ptrace.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h> 2017-03-02 08:42:36 +01:00
reboot.c
regs_32.S
regs_64.S
relocate_kernel_32.S
relocate_kernel_64.S
setup.c tile: use __ro_after_init instead of tile-specific __write_once 2016-12-16 15:32:29 -05:00
signal.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h> 2017-03-02 08:42:36 +01:00
single_step.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
smp.c tile: use __ro_after_init instead of tile-specific __write_once 2016-12-16 15:32:29 -05:00
smpboot.c sched/headers: Move task->mm handling methods to <linux/sched/mm.h> 2017-03-03 01:43:28 +01:00
stack.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h> 2017-03-02 08:42:36 +01:00
sys.c
sysfs.c
tile-desc_32.c
tile-desc_64.c
time.c tile/time: Set ->min_delta_ticks and ->max_delta_ticks 2017-04-14 13:11:21 -07:00
tlb.c
traps.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/debug.h> 2017-03-02 08:42:34 +01:00
unaligned.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task.h> 2017-03-02 08:42:35 +01:00
usb.c
vdso.c
vmlinux.lds.S