All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Rodrigo Alencar <455.rodrigo.alencar@gmail.com>
Cc: Jonathan Cameron <jic23@kernel.org>,
	Rodrigo Alencar via B4 Relay
	<devnull+rodrigo.alencar.analog.com@kernel.org>,
	rodrigo.alencar@analog.com, linux-kernel@vger.kernel.org,
	linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
	linux-doc@vger.kernel.org, David Lechner <dlechner@baylibre.com>,
	Andy Shevchenko <andy@kernel.org>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Michael Hennerich <Michael.Hennerich@analog.com>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Jonathan Corbet <corbet@lwn.net>,
	Andrew Morton <akpm@linux-foundation.org>,
	Petr Mladek <pmladek@suse.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	Shuah Khan <skhan@linuxfoundation.org>,
	David Laight <david.laight.linux@gmail.com>
Subject: Re: [PATCH v12 02/11] lib: kstrtox: add kstrtoudec64() and kstrtodec64()
Date: Tue, 12 May 2026 17:43:49 +0300	[thread overview]
Message-ID: <agM8pWrM6j_XksvN@ashevche-desk.local> (raw)
In-Reply-To: <dxjg2sdyxb7ieb4abmeyyye7qok6cczrxabpsjyjhcbehwoec3@sbbqoo4wmzre>

On Tue, May 12, 2026 at 03:12:24PM +0100, Rodrigo Alencar wrote:
> On 26/05/12 04:48PM, Andy Shevchenko wrote:
> > On Tue, May 12, 2026 at 02:21:14PM +0100, Rodrigo Alencar wrote:
> > > On 26/05/12 04:12PM, Andy Shevchenko wrote:
> > > > On Tue, May 12, 2026 at 12:39:53PM +0100, Jonathan Cameron wrote:
> > > > > On Sun, 10 May 2026 13:42:20 +0100
> > > > > Rodrigo Alencar via B4 Relay <devnull+rodrigo.alencar.analog.com@kernel.org> wrote:
> > > > > 
> > > > > > Add helpers that parses decimal numbers into 64-bit number, i.e., decimal
> > > > > > point numbers with pre-defined scale are parsed into a 64-bit value (fixed
> > > > > > precision). After the decimal point, digits beyond the specified scale
> > > > > > are ignored.
> > > > > 
> > > > > Whilst Rodrigo has already replied to say there will be another version
> > > > > I'd like to request final feedback from those who were involved in the parser
> > > > > discussions.  
> > > > > 
> > > > > They got very involved and I'm far from an expert in the right way to do
> > > > > this stuff.  
> > > > > 
> > > > > I don't think David Laight was +CC so I've added that.
> > > > > David, Andy - I think you two were most involved in that discussion:
> > > > > Any objections to the end result? 
> > > > 
> > > > I already said a few times about the naming. I do not like the kstrto*()
> > > > be semantically different on how they treat the input. Second point is
> > > > to avoid code duplication, but this one is less of a concern since the
> > > > new code is in the library close to the other potentially duplicate code
> > > > piece and hence can be addressed later.
> > > 
> > > I suppose I reached into kstrtodec64() and kstrtoudec64() because it aligns
> > > with your expectations for kstrto*() semantics, no? Those include:
> > >  - overflow check;
> > >  - extensive input validation;
> > >  - optional '\n' in the end;
> > >  - mandatory nul-termination.
> > > 
> > > am I missing anything?
> > 
> > When we add scale we basically make that not true. Moreover the code in this
> > patch makes scale == number_of_characters which I think a bit fragile, however
> > it's about the fractional part when the amount of digits is equal to scale.
> 
> That is not really the case. It is being set as a limit, so it does check for
> truncation and zero-padding.

I do not see it happens in _parse_integer_limit(). It doesn't try to parse more
characters than it's requested in max_chars. It doesn't check if there are more
character nor their converted values.

> > To make this work as expected we need to add an additional call like
> > kstrtoull() (and perhaps drop that \n and NUL-terminator checks) and see
> > if that overflows or not. Since it's a fractional part it must have less
> > than 20 (decimal) digits there, so we check the rv (or how many digits
> > were parsed successfully) and compare to 20. If it's more, we got too many
> > decimal digits.
> 
> For overflow it checks the KSTRTOX_OVERFLOW flag and leverages check_mul_overflow()
> and check_add_overflow() when combining fractional and integer parts. The amount
> of characters is not really important there. The scale cannot be bigger than 19 and
> that makes sure that int_pow() does not overflow. The code uses _parse_integer_limit()
> due to the nature of input and to avoid 64-bit division, kstrtoull() at any point
> (parsing integer or fractional parts) does not make much sense.

Under 'like kstrotoull()' I meant something that repeats needed functionality.
I believe it's parse_integer() (without limit).

> > Maybe I'm missing these checks already performed?
> > 
> > > > Having the test cases is a big benefit, and that part I like the most.

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2026-05-12 14:43 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-10 12:42 [PATCH v12 00/11] ADF41513/ADF41510 PLL frequency synthesizers Rodrigo Alencar
2026-05-10 12:42 ` Rodrigo Alencar via B4 Relay
2026-05-10 12:42 ` [PATCH v12 01/11] dt-bindings: iio: frequency: add adf41513 Rodrigo Alencar
2026-05-10 12:42   ` Rodrigo Alencar via B4 Relay
2026-05-10 12:42 ` [PATCH v12 02/11] lib: kstrtox: add kstrtoudec64() and kstrtodec64() Rodrigo Alencar
2026-05-10 12:42   ` Rodrigo Alencar via B4 Relay
2026-05-11 21:14   ` sashiko-bot
2026-05-12 11:39   ` Jonathan Cameron
2026-05-12 11:52     ` Rodrigo Alencar
2026-05-12 13:12     ` Andy Shevchenko
2026-05-12 13:21       ` Rodrigo Alencar
2026-05-12 13:48         ` Andy Shevchenko
2026-05-12 14:12           ` Rodrigo Alencar
2026-05-12 14:43             ` Andy Shevchenko [this message]
2026-05-12 15:11               ` Rodrigo Alencar
2026-05-12 15:21                 ` Andy Shevchenko
2026-05-12 16:18                   ` David Laight
2026-05-12 17:08                     ` Andy Shevchenko
2026-05-12 16:35                   ` Rodrigo Alencar
2026-05-12 17:13                     ` Andy Shevchenko
2026-05-12 17:26                       ` Rodrigo Alencar
2026-05-12 17:46                         ` Andy Shevchenko
2026-05-12 18:15                           ` Rodrigo Alencar
2026-05-12 19:08                             ` Andy Shevchenko
2026-05-12 19:39                               ` Rodrigo Alencar
2026-05-12 20:16                                 ` Andy Shevchenko
2026-05-13  7:14                                   ` Rodrigo Alencar
2026-05-13 10:09                                     ` David Laight
2026-05-13  9:41   ` Rodrigo Alencar
2026-05-15 16:05     ` Rodrigo Alencar
2026-05-15 19:21       ` David Laight
2026-05-10 12:42 ` [PATCH v12 03/11] lib: test-kstrtox: tests for kstrtodec64() and kstrtoudec64() Rodrigo Alencar
2026-05-10 12:42   ` Rodrigo Alencar via B4 Relay
2026-05-12 13:51   ` Andy Shevchenko
2026-05-10 12:42 ` [PATCH v12 04/11] lib: math: div64: add div64_s64_rem() Rodrigo Alencar
2026-05-10 12:42   ` Rodrigo Alencar via B4 Relay
2026-05-12 13:50   ` Andy Shevchenko
2026-05-10 12:42 ` [PATCH v12 05/11] iio: core: add decimal value formatting into 64-bit value Rodrigo Alencar
2026-05-10 12:42   ` Rodrigo Alencar via B4 Relay
2026-05-11 21:59   ` sashiko-bot
2026-05-12 14:35   ` Andy Shevchenko
2026-05-12 16:09     ` Rodrigo Alencar
2026-05-12 17:49       ` Andy Shevchenko
2026-05-12 19:01         ` Rodrigo Alencar
2026-05-10 12:42 ` [PATCH v12 06/11] iio: test: iio-test-format: add test case for decimal format Rodrigo Alencar
2026-05-10 12:42   ` Rodrigo Alencar via B4 Relay
2026-05-12 14:36   ` Andy Shevchenko
2026-05-12 17:02     ` Rodrigo Alencar
2026-05-12 17:51       ` Andy Shevchenko
2026-05-10 12:42 ` [PATCH v12 07/11] iio: frequency: adf41513: driver implementation Rodrigo Alencar
2026-05-10 12:42   ` Rodrigo Alencar via B4 Relay
2026-05-11 22:43   ` sashiko-bot
2026-05-12 10:15     ` Rodrigo Alencar
2026-05-12 11:31       ` Jonathan Cameron
2026-05-10 12:42 ` [PATCH v12 08/11] iio: frequency: adf41513: handle LE synchronization feature Rodrigo Alencar
2026-05-10 12:42   ` Rodrigo Alencar via B4 Relay
2026-05-11 23:11   ` sashiko-bot
2026-05-10 12:42 ` [PATCH v12 09/11] iio: frequency: adf41513: features on frequency change Rodrigo Alencar
2026-05-10 12:42   ` Rodrigo Alencar via B4 Relay
2026-05-10 12:42 ` [PATCH v12 10/11] docs: iio: add documentation for adf41513 driver Rodrigo Alencar
2026-05-10 12:42   ` Rodrigo Alencar via B4 Relay
2026-05-11 23:44   ` sashiko-bot
2026-05-10 12:42 ` [PATCH v12 11/11] Documentation: ABI: testing: add common ABI file for iio/frequency Rodrigo Alencar
2026-05-10 12:42   ` Rodrigo Alencar via B4 Relay
2026-05-11 23:31   ` sashiko-bot
2026-05-12 11:36   ` Jonathan Cameron
2026-05-12 11:48 ` [PATCH v12 00/11] ADF41513/ADF41510 PLL frequency synthesizers Jonathan Cameron

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=agM8pWrM6j_XksvN@ashevche-desk.local \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=455.rodrigo.alencar@gmail.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=akpm@linux-foundation.org \
    --cc=andy@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=corbet@lwn.net \
    --cc=david.laight.linux@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=devnull+rodrigo.alencar.analog.com@kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=jic23@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=pmladek@suse.com \
    --cc=robh@kernel.org \
    --cc=rodrigo.alencar@analog.com \
    --cc=rostedt@goodmis.org \
    --cc=senozhatsky@chromium.org \
    --cc=skhan@linuxfoundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.