kernel/sched/stats.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
It's not necessary to do the delta-related subtraction if the task
is not on rq migrating. Add the migrating related judgment back.
Signed-off-by: Honglei Wang <jameshongleiwang@126.com>
---
kernel/sched/stats.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/sched/stats.c b/kernel/sched/stats.c
index d1c9429a4ac5..60560fb31e63 100644
--- a/kernel/sched/stats.c
+++ b/kernel/sched/stats.c
@@ -12,7 +12,8 @@ void __update_stats_wait_start(struct rq *rq, struct task_struct *p,
wait_start = rq_clock(rq);
prev_wait_start = schedstat_val(stats->wait_start);
- if (p && likely(wait_start > prev_wait_start))
+ if (p && task_on_rq_migrating(p) &&
+ likely(wait_start > prev_wait_start))
wait_start -= prev_wait_start;
__schedstat_set(stats->wait_start, wait_start);
--
2.33.0
Gentle ping on this one submitted a couple of weeks earlier. Is it worthy of being picked? Thanks, Honglei On 11/13/25 8:43 PM, Honglei Wang wrote: > It's not necessary to do the delta-related subtraction if the task > is not on rq migrating. Add the migrating related judgment back. > > Signed-off-by: Honglei Wang <jameshongleiwang@126.com> > --- > kernel/sched/stats.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/kernel/sched/stats.c b/kernel/sched/stats.c > index d1c9429a4ac5..60560fb31e63 100644 > --- a/kernel/sched/stats.c > +++ b/kernel/sched/stats.c > @@ -12,7 +12,8 @@ void __update_stats_wait_start(struct rq *rq, struct task_struct *p, > wait_start = rq_clock(rq); > prev_wait_start = schedstat_val(stats->wait_start); > > - if (p && likely(wait_start > prev_wait_start)) > + if (p && task_on_rq_migrating(p) && > + likely(wait_start > prev_wait_start)) > wait_start -= prev_wait_start; > > __schedstat_set(stats->wait_start, wait_start);
© 2016 - 2026 Red Hat, Inc.