Merge branch 'rcu/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 4 Jan 2021 18:55:19 +0000 (10:55 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 4 Jan 2021 18:55:19 +0000 (10:55 -0800)
Pull RCU fix from Paul McKenney:
 "This is a fix for a regression in the v5.10 merge window, but it was
  reported quite late in the v5.10 process, plus generating and testing
  the fix took some time.

  The regression is due to commit 36dadef23fcc ("kprobes: Init kprobes
  in early_initcall") which on powerpc can use RCU Tasks before
  initialization, resulting in boot failures.

  The fix is straightforward, simply moving initialization of RCU Tasks
  before the early_initcall()s. The fix has been exposed to -next and
  kbuild test robot testing, and has been tested by the PowerPC guys"

* 'rcu/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu:
  rcu-tasks: Move RCU-tasks initialization to before early_initcall()

1  2 
include/linux/rcupdate.h
init/main.c
kernel/rcu/tasks.h

Simple merge
diff --cc init/main.c
Simple merge
@@@ -564,10 -569,9 +564,9 @@@ static int __init rcu_spawn_tasks_kthre
        rcu_spawn_tasks_kthread_generic(&rcu_tasks);
        return 0;
  }
- core_initcall(rcu_spawn_tasks_kthread);
  
 -#ifndef CONFIG_TINY_RCU
 -static void show_rcu_tasks_classic_gp_kthread(void)
 +#if !defined(CONFIG_TINY_RCU)
 +void show_rcu_tasks_classic_gp_kthread(void)
  {
        show_rcu_tasks_generic_gp_kthread(&rcu_tasks, "");
  }
@@@ -692,10 -696,9 +691,9 @@@ static int __init rcu_spawn_tasks_rude_
        rcu_spawn_tasks_kthread_generic(&rcu_tasks_rude);
        return 0;
  }
- core_initcall(rcu_spawn_tasks_rude_kthread);
  
 -#ifndef CONFIG_TINY_RCU
 -static void show_rcu_tasks_rude_gp_kthread(void)
 +#if !defined(CONFIG_TINY_RCU)
 +void show_rcu_tasks_rude_gp_kthread(void)
  {
        show_rcu_tasks_generic_gp_kthread(&rcu_tasks_rude, "");
  }
@@@ -1193,10 -1203,9 +1196,9 @@@ static int __init rcu_spawn_tasks_trace
        rcu_spawn_tasks_kthread_generic(&rcu_tasks_trace);
        return 0;
  }
- core_initcall(rcu_spawn_tasks_trace_kthread);
  
 -#ifndef CONFIG_TINY_RCU
 -static void show_rcu_tasks_trace_gp_kthread(void)
 +#if !defined(CONFIG_TINY_RCU)
 +void show_rcu_tasks_trace_gp_kthread(void)
  {
        char buf[64];