Messages in this thread | | | Date | Tue, 12 Nov 2019 10:48:44 -0500 | From | Johannes Weiner <> | Subject | Re: [PATCH] psi:fix divide by zero in psi_update_stats |
| |
On Tue, Nov 12, 2019 at 10:41:46AM -0500, Johannes Weiner wrote: > On Fri, Nov 08, 2019 at 03:33:24PM +0800, tim wrote: > > In psi_update_stats, it is possible that period has value like > > 0xXXXXXXXX00000000 where the lower 32 bit is 0, then it calls div_u64 which > > truncates u64 period to u32, results in zero divisor. > > Use div64_u64() instead of div_u64() if the divisor is u64 to avoid > > truncation to 32-bit on 64-bit platforms. > > > > Signed-off-by: xiejingfeng <xiejingfeng@linux.alibaba.com> > > This is legit. When we stop the periodic averaging worker due to an > idle CPU, the period after restart can be much longer than the ~4 sec > in the lower 32 bits. See the missed_periods logic in update_averages.
Argh, that's not right. Of course I notice right after hitting send.
missed_periods are subtracted out of the difference between now and the last update, so period should be not much bigger than 2s.
Something else is going on here.
| |