On Mon, 18 May 2026 14:56:06 +0100 Rodrigo Alencar <[email protected]> wrote:
> On 26/05/17 06:56PM, [email protected] wrote: > > Thank you for your contribution! Sashiko AI review found 1 potential > > issue(s) to consider: > > - [Medium] Silent truncation of 64-bit values when written to a 32-bit > > register access function. > > -- > > > > commit 64785a0c1416e2cf718b558aa7a2cc9ac39b2d81 > > Author: Rodrigo Alencar <[email protected]> > > > > iio: core: support 64-bit register through debugfs > > > > This commit introduces a debugfs_reg64_access function pointer to iio_info > > to allow 64-bit register reads and writes through debugfs. The file > > operation > > callbacks are modified to prefer the 64-bit variant when available. > > > > > diff --git a/drivers/iio/industrialio-core.c > > > b/drivers/iio/industrialio-core.c > > > index e587aca79b8e7..5c8404efd0a56 100644 > > > --- a/drivers/iio/industrialio-core.c > > > +++ b/drivers/iio/industrialio-core.c > > > > [ ... ] > > > > > @@ -429,7 +439,7 @@ static ssize_t iio_debugfs_write_reg(struct file > > > *file, > > > > > > buf[ret] = '\0'; > > > > > > - ret = sscanf(buf, "%i %i", ®, &val); > > > + ret = sscanf(buf, "%i %lli", ®, &val64); > > > > > > switch (ret) { > > > case 1: > > > @@ -437,8 +447,12 @@ static ssize_t iio_debugfs_write_reg(struct file > > > *file, > > > break; > > > case 2: > > > iio_dev_opaque->cached_reg_addr = reg; > > > - ret = indio_dev->info->debugfs_reg_access(indio_dev, reg, > > > - val, NULL); > > > + if (indio_dev->info->debugfs_reg64_access) > > > + ret = indio_dev->info->debugfs_reg64_access(indio_dev, > > > reg, > > > + val64, > > > NULL); > > > + else > > > + ret = indio_dev->info->debugfs_reg_access(indio_dev, > > > reg, > > > + val64, NULL); > > > > > > > Could this introduce a regression where values are silently truncated if the > > provided input exceeds 32 bits? > > > > Since the input is now unconditionally parsed as a 64-bit integer, falling > > back to debugfs_reg_access (which takes an unsigned int for writeval) will > > implicitly cast val64. If a user provides a value larger than UINT_MAX to a > > driver that only provides the 32-bit callback, it appears the value will be > > truncated rather than rejected with an error like -EINVAL. > > Maybe -EINVAL can be returned for that case indeed. For a debug interface I > did not see that as a problem. Agreed - I don't see this as important either way. > > > -- > > Sashiko AI review ยท > > https://sashiko.dev/#/patchset/[email protected]?part=2 > > >

