aboutsummaryrefslogtreecommitdiff
path: root/lib/netdev-notifier-error-inject.c
diff options
context:
space:
mode:
authorAnna-Maria Gleixner <[email protected]>2017-12-22 15:51:12 +0100
committerThomas Gleixner <[email protected]>2017-12-29 23:13:09 +0100
commitced6d5c11d3e7b342f1a80f908e6756ebd4b8ddd (patch)
tree49657d66f4200eac62ace044a82bf94656c1e3d3 /lib/netdev-notifier-error-inject.c
parent61233580f1f33c50e159c50e24d80ffd2ba2e06b (diff)
timers: Use deferrable base independent of base::nohz_active
During boot and before base::nohz_active is set in the timer bases, deferrable timers are enqueued into the standard timer base. This works correctly as long as base::nohz_active is false. Once it base::nohz_active is set and a timer which was enqueued before that is accessed the lock selector code choses the lock of the deferred base. This causes unlocked access to the standard base and in case the timer is removed it does not clear the pending flag in the standard base bitmap which causes get_next_timer_interrupt() to return bogus values. To prevent that, the deferrable timers must be enqueued in the deferrable base, even when base::nohz_active is not set. Those deferrable timers also need to be expired unconditional. Fixes: 500462a9de65 ("timers: Switch to a non-cascading wheel") Signed-off-by: Anna-Maria Gleixner <[email protected]> Signed-off-by: Thomas Gleixner <[email protected]> Reviewed-by: Frederic Weisbecker <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Sebastian Siewior <[email protected]> Cc: [email protected] Cc: [email protected] Cc: Paul McKenney <[email protected]> Link: https://lkml.kernel.org/r/[email protected]
Diffstat (limited to 'lib/netdev-notifier-error-inject.c')
0 files changed, 0 insertions, 0 deletions