On Thu, 12 Feb 2026 15:41:59 +0200
Andy Shevchenko <[email protected]> wrote:
> On Thu, Feb 12, 2026 at 03:56:24PM +0300, Dmitry Antipov wrote:
> > In '_parse_integer_limit()', adjust native integer arithmetic
> > with near-to-overflow branch where 'check_mul_overflow()' and
> > 'check_add_overflow()' are used to check whether an intermediate
> > result goes out of range, and denote such a case with ULLONG_MAX,
> > thus making the function more similar to standard C library's
> > 'strtoull()'. Adjust comment to kernel-doc style as well.
>
> ...
>
> > + for (rv = 0; max_chars--; rv++, s++) {
>
> Hmm... is max_chars being used inside for-loop body? I would rather use
> regular
> pattern here:
>
> for (rv = 0; rv < max_chars; rv++, s++) {
>
> (just check that any integer / sign promotion doesn't change the logic).
>
The 'problem' is that the loop sets 'OVERFLOW' in rv.
But that is easily solved.
The smallest code is probably from the slightly horrid:
rv = max_chars;
lim = s + max_chars;
while (s < lim) {
ch = *s++;
..
}
return rv - (lim - s);
although that relies on max_chars being sane.
David