diff options
Diffstat (limited to 'kernel/sched/fair.c')
-rw-r--r-- | kernel/sched/fair.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index e1602a0fdbf8..9bbc303598ea 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c | |||
@@ -1571,7 +1571,13 @@ static inline void enqueue_entity_load_avg(struct cfs_rq *cfs_rq, | |||
1571 | } | 1571 | } |
1572 | wakeup = 0; | 1572 | wakeup = 0; |
1573 | } else { | 1573 | } else { |
1574 | __synchronize_entity_decay(se); | 1574 | /* |
1575 | * Task re-woke on same cpu (or else migrate_task_rq_fair() | ||
1576 | * would have made count negative); we must be careful to avoid | ||
1577 | * double-accounting blocked time after synchronizing decays. | ||
1578 | */ | ||
1579 | se->avg.last_runnable_update += __synchronize_entity_decay(se) | ||
1580 | << 20; | ||
1575 | } | 1581 | } |
1576 | 1582 | ||
1577 | /* migrated tasks did not contribute to our blocked load */ | 1583 | /* migrated tasks did not contribute to our blocked load */ |