diff options
Diffstat (limited to 'kernel/time/tick-broadcast.c')
-rw-r--r-- | kernel/time/tick-broadcast.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index b4c245580b79..20d6fba70652 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c | |||
@@ -599,8 +599,6 @@ void tick_broadcast_oneshot_control(unsigned long reason) | |||
599 | } else { | 599 | } else { |
600 | if (cpumask_test_and_clear_cpu(cpu, tick_broadcast_oneshot_mask)) { | 600 | if (cpumask_test_and_clear_cpu(cpu, tick_broadcast_oneshot_mask)) { |
601 | clockevents_set_mode(dev, CLOCK_EVT_MODE_ONESHOT); | 601 | clockevents_set_mode(dev, CLOCK_EVT_MODE_ONESHOT); |
602 | if (dev->next_event.tv64 == KTIME_MAX) | ||
603 | goto out; | ||
604 | /* | 602 | /* |
605 | * The cpu which was handling the broadcast | 603 | * The cpu which was handling the broadcast |
606 | * timer marked this cpu in the broadcast | 604 | * timer marked this cpu in the broadcast |
@@ -615,6 +613,11 @@ void tick_broadcast_oneshot_control(unsigned long reason) | |||
615 | goto out; | 613 | goto out; |
616 | 614 | ||
617 | /* | 615 | /* |
616 | * Bail out if there is no next event. | ||
617 | */ | ||
618 | if (dev->next_event.tv64 == KTIME_MAX) | ||
619 | goto out; | ||
620 | /* | ||
618 | * If the pending bit is not set, then we are | 621 | * If the pending bit is not set, then we are |
619 | * either the CPU handling the broadcast | 622 | * either the CPU handling the broadcast |
620 | * interrupt or we got woken by something else. | 623 | * interrupt or we got woken by something else. |