]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - kernel/sched/cputime.c
sched/cputime: Fix steal time accounting
[mirror_ubuntu-bionic-kernel.git] / kernel / sched / cputime.c
index 1934f658c03604272e5809f32fee1a6a3c928990..8b9bcc5a58faddc51687ec1ee84c17ec6217e2ce 100644 (file)
@@ -508,13 +508,20 @@ void account_process_tick(struct task_struct *p, int user_tick)
  */
 void account_idle_ticks(unsigned long ticks)
 {
-
+       cputime_t cputime, steal;
        if (sched_clock_irqtime) {
                irqtime_account_idle_ticks(ticks);
                return;
        }
 
-       account_idle_time(jiffies_to_cputime(ticks));
+       cputime = cputime_one_jiffy;
+       steal = steal_account_process_time(cputime);
+
+       if (steal >= cputime)
+               return;
+
+       cputime -= steal;
+       account_idle_time(cputime);
 }
 
 /*