[tip: sched/urgent] sched/pelt: Fix u32 truncation of the PELT period count
From: tip-bot2 for Hui Su
Date: Fri Nov 06 2026 - 04:54:10 EST
The following commit has been merged into the sched/urgent branch of tip:
Commit-ID: a0c755e574e37fddb59edf175f27dc3877e7fe23
Gitweb: https://git.kernel.org/tip/a0c755e574e37fddb59edf175f27dc3877e7fe23
Author: Hui Su <sh_def@xxxxxxx>
AuthorDate: Fri, 23 Oct 2026 11:52:07 +09:00
Committer: Ingo Molnar <mingo@xxxxxxxxxx>
CommitterDate: Fri, 06 Nov 2026 10:04:11 +01:00
sched/pelt: Fix u32 truncation of the PELT period count
accumulate_sum() computes the number of elapsed PELT periods in a
u64 but returns u32. When the count is a multiple of 2^32, it is
truncated to zero even though the PELT sums have been updated.
The caller interprets zero as no period boundary crossed and skips
recomputing the averages, leaving *_avg stale relative to *_sum.
Return the period count as u64 so the caller can test it without
truncation.
Fixes: a481db34b9be ("sched/fair: Optimize ___update_sched_avg()")
Signed-off-by: Hui Su <sh_def@xxxxxxx>
Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
Reviewed-by: Vincent Guittot <vincent.guittot@xxxxxxxxxx>
Reviewed-by: Kayra Cizmeci <kayracizmeci@xxxxxxxxx>
Link: https://patch.msgid.link/20261023025207.2967903-1-sh_def@xxxxxxx
---
kernel/sched/pelt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/sched/pelt.c b/kernel/sched/pelt.c
index 779eb58..d10d57b 100644
--- a/kernel/sched/pelt.c
+++ b/kernel/sched/pelt.c
@@ -99,7 +99,7 @@ static u32 __accumulate_pelt_segments(u64 periods, u32 d1, u32 d3)
* d1 y^p + 1024 \Sum y^n + d3 y^0 (Step 2)
* n=1
*/
-static __always_inline u32
+static __always_inline u64
accumulate_sum(u64 delta, struct sched_avg *sa,
unsigned long load, unsigned long runnable, int running)
{