From: John Hubbard <jhubbard@xxxxxxxxxx> Commit 8fcf2cc768acd845c1fed837bf9cfe2d7106336d in linux-next introduced a regression in some configurations. Specifically, with CONFIG_NO_HZ_FULL set, and CONFIG_NO_HZ_FULL_ALL *not* set, the kernel will crash in lockup_detector_init(), due to a NULL tick_nohz_full_init pointer. This is because the above commit uses tick_nohz_full_init (in lockup_detector_init), if CONFIG_NO_HZ_FULL is set, but tick_nohz_full_init only gets allocated if either: a) CONFIG_NO_HZ_FULL_ALL is set, or b) Someone passes in nohz_full=<any_value> on the boot args line. To correct this, change the allocation site (case a, above): allocate tick_nohz_full_init whenever CONFIG_NO_HZ_FULL is set. Also, change the enclosing function name to more accurately reflect its current role. Signed-off-by: John Hubbard <jhubbard@xxxxxxxxxx> --- kernel/time/tick-sched.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index 9142591..b21ee28 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -326,11 +326,11 @@ static int tick_nohz_cpu_down_callback(struct notifier_block *nfb, return NOTIFY_OK; } -static int tick_nohz_init_all(void) +static int tick_nohz_full_init(void) { int err = -1; -#ifdef CONFIG_NO_HZ_FULL_ALL +#ifdef CONFIG_NO_HZ_FULL if (!alloc_cpumask_var(&tick_nohz_full_mask, GFP_KERNEL)) { WARN(1, "NO_HZ: Can't allocate full dynticks cpumask\n"); return err; @@ -347,7 +347,7 @@ void __init tick_nohz_init(void) int cpu; if (!tick_nohz_full_running) { - if (tick_nohz_init_all() < 0) + if (tick_nohz_full_init() < 0) return; } -- 2.3.7 -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html