mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
sched/cputime: Drop now-stale mul_u64_u64_div_u64() over-approximation guard
Commit77baa5bafc("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. Commitb29a62d87c("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
This commit is contained in:
parent
eecd5e117c
commit
95f44886af
|
|
@ -587,12 +587,6 @@ void cputime_adjust(struct task_cputime *curr, struct prev_cputime *prev,
|
|||
}
|
||||
|
||||
stime = mul_u64_u64_div_u64(stime, rtime, stime + utime);
|
||||
/*
|
||||
* Because mul_u64_u64_div_u64() can approximate on some
|
||||
* achitectures; enforce the constraint that: a*b/(b+c) <= a.
|
||||
*/
|
||||
if (unlikely(stime > rtime))
|
||||
stime = rtime;
|
||||
|
||||
update:
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user