On Thu 2021-02-11 13:55:26, Petr Mladek wrote: > On Mon 2021-02-08 17:38:29, Richard Fitzgerald wrote: > > On 08/02/2021 15:18, Andy Shevchenko wrote: > > > On Mon, Feb 08, 2021 at 02:01:52PM +0000, Richard Fitzgerald wrote: > > > A nit-pick: What if we rewrite above as > > > > > > static unsigned long long simple_strntoull(const char *cp, size_t max_chars, > > > char **endp, unsigned int base) > > > { > > > unsigned long long result = 0ULL; > > > const char *startp = cp; > > > unsigned int rv; > > > size_t chars; > > > > > > cp = _parse_integer_fixup_radix(cp, &base); > > > chars = cp - startp; > > > if (chars >= max_chars) { > > > /* We hit the limit */ > > > cp = startp + max_chars; > > > } else { > > > rv = _parse_integer_limit(cp, base, &result, max_chars - chars); > > > /* FIXME */ > > > cp += (rv & ~KSTRTOX_OVERFLOW); > > > } > > > > > > if (endp) > > > *endp = (char *)cp; > > > > > > return result; > > > } > > > > > > ... > > > > > > I don't mind rewriting that code if you prefer that way. > > I am used to working on other kernel subsytems where the preference is > > to bail out on the error case so that the "normal" case flows without > > nesting. > > Yeah. But in this case Andy's variant looks slightly better redable to me. > ... > > > > > > > > + val.s = simple_strntoll(str, > > > > + field_width > 0 ? field_width : SIZE_MAX, > > > > + &next, base); > > > > > > is? Also, is field_width == 0 should be treated as "parse to the MAX"? > > > > Earlier code terminates scanning if the width parsed from the format > > string is <= 0. > > > So field_width can only be -1 or > 0 here. But now you > > point it out, that test would be better as field_width >= 0 ... so > > it deals with 0 if it ever happened to sneak through to here > > somehow. > > It might make sense to be proactive and change it to >= 0. > But I would do it in a separate patch. The "< 0" condition > matches the original code. Ah, I have missed that you have already sent v6 where you did this change in the same patch. There is no need to resend it just because of this. I am going to look at v6. Best Regards, Petr