diff --git a/[refs] b/[refs] index 9bbe713855fc..8264ee9aeefa 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 08ec3df5109e0555da5b9deb4382fd29733c852c +refs/heads/master: 1e819950660e6a811b549422ffb652273257e45e diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index e717047be5cf..4f13d379bea5 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -3481,9 +3481,13 @@ asmlinkage void __sched schedule(void) schedule_debug(prev); - spin_lock_irq(&rq->lock); - clear_tsk_need_resched(prev); + /* + * Do the rq-clock update outside the rq lock: + */ + local_irq_disable(); __update_rq_clock(rq); + spin_lock(&rq->lock); + clear_tsk_need_resched(prev); if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) { if (unlikely((prev->state & TASK_INTERRUPTIBLE) &&