diff --git a/kernel/sched/psi.c b/kernel/sched/psi.c index d1212f17a8982975d0ec8d151ab16f033c22b60a..db27b69fa92a0756a0fe06d9b98f1f09573f66f7 100644 --- a/kernel/sched/psi.c +++ b/kernel/sched/psi.c @@ -699,14 +699,15 @@ static void psi_group_change(struct psi_group *group, int cpu, for (t = 0, m = clear; m; m &= ~(1 << t), t++) { if (!(m & (1 << t))) continue; - if (groupc->tasks[t] == 0 && !psi_bug) { + if (groupc->tasks[t]) { + groupc->tasks[t]--; + } else if (!psi_bug) { printk_deferred(KERN_ERR "psi: task underflow! cpu=%d t=%d tasks=[%u %u %u %u] clear=%x set=%x\n", cpu, t, groupc->tasks[0], groupc->tasks[1], groupc->tasks[2], groupc->tasks[3], clear, set); psi_bug = 1; } - groupc->tasks[t]--; } for (t = 0; set; set &= ~(1 << t), t++)