summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched/core.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 263c15b0312e..63f08cf4f517 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -3024,8 +3024,12 @@ void sched_account_irqstart(int cpu, struct task_struct *curr, u64 wallclock)
if (!rq->window_start || sched_disable_window_stats)
return;
- if (is_idle_task(curr) && use_cycle_counter)
+ if (is_idle_task(curr)) {
+ /* We're here without rq->lock held, IRQ disabled */
+ raw_spin_lock(&rq->lock);
update_task_cpu_cycles(curr, cpu);
+ raw_spin_unlock(&rq->lock);
+ }
}
static void reset_task_stats(struct task_struct *p)