]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - kernel/sched/core.c
sched/core: Reset RQCF_ACT_SKIP before unpinning rq->lock
[mirror_ubuntu-bionic-kernel.git] / kernel / sched / core.c
index 41df935180ea668c075dfc7295007d6c9d07caea..311460b46d688e1f9f53a3439aa81704c19c84b0 100644 (file)
@@ -2887,6 +2887,9 @@ context_switch(struct rq *rq, struct task_struct *prev,
                prev->active_mm = NULL;
                rq->prev_mm = oldmm;
        }
+
+       rq->clock_skip_update = 0;
+
        /*
         * Since the runqueue lock will be released by the next
         * task (which is an invalid locking op but in the case
@@ -3392,7 +3395,6 @@ static void __sched notrace __schedule(bool preempt)
        next = pick_next_task(rq, prev, &rf);
        clear_tsk_need_resched(prev);
        clear_preempt_need_resched();
-       rq->clock_skip_update = 0;
 
        if (likely(prev != next)) {
                rq->nr_switches++;
@@ -3402,6 +3404,7 @@ static void __sched notrace __schedule(bool preempt)
                trace_sched_switch(preempt, prev, next);
                rq = context_switch(rq, prev, next, &rf); /* unlocks the rq */
        } else {
+               rq->clock_skip_update = 0;
                rq_unpin_lock(rq, &rf);
                raw_spin_unlock_irq(&rq->lock);
        }