diff options
| -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. |
