Re: sched: rq->nr_iowait transiently going negative after the recent p->on_cpu optimization

From: Tejun Heo
Date: Thu Sep 24 2020 - 10:27:56 EST


Hello,

On Thu, Sep 24, 2020 at 01:50:42PM +0200, Peter Zijlstra wrote:
> Hurmph.. I suppose you're right :/ And this is an actual problem?

Yeah, this got exposed to userspace as a full 64bit number which overflowed
u32 conversion in the rust procfs library which aborted a program I was
working on multiple times over several months.

On a more theoretical side, it might also surprise nr_iowait_cpu() users.
However, a real problem that may be.

> I think the below should cure that, but blergh, not nice. If you could
> confirm, I'll try and think of something nicer.

Rik suggested that it'd be sufficient to return 0 on underflow especially
given that 0 is actually the right number to describe the state. So, maybe
that can be a nicer code-wise?

Thanks.

--
tejun