]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
sched/cputime: Drop now-stale mul_u64_u64_div_u64() over-approximation guard
authorNicolas Pitre <nico@fluxnic.net>
Thu, 14 May 2026 20:26:29 +0000 (16:26 -0400)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 19 May 2026 10:17:35 +0000 (12:17 +0200)
commit95f44886afec7cbce0ff2a5ed8158fbe8aa6f2ec
treee031ca20412288422a1ca7666f98ef21b97ff5fe
parenteecd5e117cfa63a353f4c69fdcea5d9b14af698e
sched/cputime: Drop now-stale mul_u64_u64_div_u64() over-approximation guard

Commit 77baa5bafcbe ("sched/cputime: Fix mul_u64_u64_div_u64() precision
for cputime") added a clamp in cputime_adjust():

if (unlikely(stime > rtime))
stime = rtime;

The justification was that mul_u64_u64_div_u64() could over-approximate
on some architectures (notably arm64 and the old 32-bit fallback), so
the mathematically impossible stime > rtime was nevertheless reachable
and would underflow utime = rtime - stime.

That premise no longer holds. Commit b29a62d87cc0 ("mul_u64_u64_div_u64:
make it precise always") replaced the fallback implementation with an
exact 128-bit long division, and the x86_64 inline asm already produced
exact results. The helper now returns the mathematically correct
floor(a*b/d) on every architecture, so stime <= rtime is guaranteed by
stime <= stime + utime and the clamp is dead code.

Remove it along with its stale comment.

Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/20260514202629.673539-1-nico@fluxnic.net
kernel/sched/cputime.c