• Thomas Gleixner's avatar
    jump_label: Reorder hotplug lock and jump_label_lock · f2545b2d
    Thomas Gleixner authored
    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: default avatarThomas Gleixner <tglx@linutronix.de>
    Acked-by: default avatarIngo Molnar <mingo@kernel.org>
    Acked-by: default avatar"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
    f2545b2d
jump_label.c 2.08 KB