diff options
Diffstat (limited to 'kernel/hrtimer.c')
-rw-r--r-- | kernel/hrtimer.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index 476cb0c0b4a4..de93a8176ca6 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c | |||
@@ -1355,17 +1355,16 @@ static void migrate_hrtimers(int cpu) | |||
1355 | tick_cancel_sched_timer(cpu); | 1355 | tick_cancel_sched_timer(cpu); |
1356 | 1356 | ||
1357 | local_irq_disable(); | 1357 | local_irq_disable(); |
1358 | 1358 | double_spin_lock(&new_base->lock, &old_base->lock, | |
1359 | spin_lock(&new_base->lock); | 1359 | smp_processor_id() < cpu); |
1360 | spin_lock(&old_base->lock); | ||
1361 | 1360 | ||
1362 | for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) { | 1361 | for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) { |
1363 | migrate_hrtimer_list(&old_base->clock_base[i], | 1362 | migrate_hrtimer_list(&old_base->clock_base[i], |
1364 | &new_base->clock_base[i]); | 1363 | &new_base->clock_base[i]); |
1365 | } | 1364 | } |
1366 | spin_unlock(&old_base->lock); | ||
1367 | spin_unlock(&new_base->lock); | ||
1368 | 1365 | ||
1366 | double_spin_unlock(&new_base->lock, &old_base->lock, | ||
1367 | smp_processor_id() < cpu); | ||
1369 | local_irq_enable(); | 1368 | local_irq_enable(); |
1370 | put_cpu_var(hrtimer_bases); | 1369 | put_cpu_var(hrtimer_bases); |
1371 | } | 1370 | } |