On Tue, 19 Dec 2017 09:27:40 +0100
Sebastian Andrzej Siewior <[email protected]> wrote:

> diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c
> index c2c344fda487..3971fa0c7194 100644
> --- a/kernel/time/hrtimer.c
> +++ b/kernel/time/hrtimer.c
> @@ -1952,6 +1952,7 @@ int hrtimers_dead_cpu(unsigned int scpu)
>       BUG_ON(cpu_online(scpu));
>       tick_cancel_sched_timer(scpu);
>  
> +     local_bh_disable();
>       local_irq_disable();
>       old_base = &per_cpu(hrtimer_bases, scpu);
>       new_base = this_cpu_ptr(&hrtimer_bases);
> @@ -1979,6 +1980,7 @@ int hrtimers_dead_cpu(unsigned int scpu)
>       /* Check, if we got expired work to do */
>       __hrtimer_peek_ahead_timers();
>       local_irq_enable();
> +     local_bh_enable();
>       return 0;
>  }

The above just seems wrong. local_irq_disable() should imply
local_bh_disable(), as it doesn't let softirqs run either.

-- Steve

Reply via email to