From: Jonathan Cameron <jic23@kernel.org>
To: Arnav Kapoor <kapoorarnav43@gmail.com>
Cc: "David Lechner" <dlechner@baylibre.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"Andy Shevchenko" <andy@kernel.org>,
"Andy Shevchenko" <andriy.shevchenko@intel.com>,
"Gwendal Grignou" <gwendal@chromium.org>,
"Stephen Boyd" <swboyd@chromium.org>,
linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 2/2] iio: proximity: sx9360: reject out-of-range hardware gain values
Date: Fri, 13 Nov 2026 01:53:48 +0000 [thread overview]
Message-ID: <20261113015348.75a452bb@jic23-hlaptop> (raw)
In-Reply-To: <20261111164041.341776-3-kapoorarnav43@gmail.com>
On Wed, 11 Nov 2026 22:10:37 +0530
Arnav Kapoor <kapoorarnav43@gmail.com> wrote:
> sx9360_write_gain() passes the value from userspace to ilog2() and then
> FIELD_PREP() into the 3-bit PROX_CTRL0 gain field without checking it,
> so some values silently program a gain unrelated to the one requested,
> and the write still reports success:
>
> - 16 to 255 write gain codes 4 to 7, which the driver does not
> advertise, and the next read reports gains of 16 to 128;
> - 256 and larger wrap around in the field, e.g. 256 sets a gain of 1;
> - 0 and negative values write code 7 (read back as 128), because
> ilog2(0) is -1 and a negative int becomes a large unsigned value.
>
> Return -ERANGE for values <= 0 and for values above the gain of 8 code.
> FIELD_FIT() is not enough here, as the field also holds codes 4 to 7,
> which the driver doesn't support. Values between the supported gains
> of 1, 2, 4 and 8 are still rounded down, as before.
>
> Fixes: 1cdb4c47f7f5 ("iio:proximity:sx9360: Add sx9360 support")
> Signed-off-by: Arnav Kapoor <kapoorarnav43@gmail.com>
The whole off by one thing you had an RFC for can be handled
on top of this which is just making sure existing values actually
fit etc.
Applied to the testing branch of iio.git.
Thanks,
Jonathan
> ---
> drivers/iio/proximity/sx9360.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/iio/proximity/sx9360.c b/drivers/iio/proximity/sx9360.c
> index 2a9b37df8f62..22b6b751c0a3 100644
> --- a/drivers/iio/proximity/sx9360.c
> +++ b/drivers/iio/proximity/sx9360.c
> @@ -68,6 +68,7 @@
> #define SX9360_REG_PROX_CTRL0_PHM 0x41
> #define SX9360_REG_PROX_CTRL0_GAIN_MASK GENMASK(5, 3)
> #define SX9360_REG_PROX_CTRL0_GAIN_1 0x80
> +#define SX9360_REG_PROX_CTRL0_GAIN_8 0x3
> #define SX9360_REG_PROX_CTRL0_RAWFILT_MASK GENMASK(2, 0)
> #define SX9360_REG_PROX_CTRL0_RAWFILT_1P50 0x01
> #define SX9360_REG_PROX_CTRL1 0x42
> @@ -625,7 +626,13 @@ static int sx9360_write_gain(struct sx_common_data *data,
> {
> unsigned int gain, reg;
>
> + if (val <= 0)
> + return -ERANGE;
> +
> gain = ilog2(val);
> + if (gain > SX9360_REG_PROX_CTRL0_GAIN_8)
> + return -ERANGE;
> +
> reg = SX9360_REG_PROX_CTRL0_PHR + chan->channel;
> gain = FIELD_PREP(SX9360_REG_PROX_CTRL0_GAIN_MASK, gain);
>
next prev parent reply other threads:[~2026-11-13 1:53 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-11 16:40 [PATCH v3 0/2] iio: proximity: sx9310/sx9360: " Arnav Kapoor
2026-11-11 16:40 ` [PATCH v3 1/2] iio: proximity: sx9310: " Arnav Kapoor
2026-11-11 16:40 ` [PATCH v3 2/2] iio: proximity: sx9360: " Arnav Kapoor
2026-11-13 1:53 ` Jonathan Cameron [this message]
2026-11-12 15:42 ` [PATCH v3 0/2] iio: proximity: sx9310/sx9360: " Andy Shevchenko
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=20261113015348.75a452bb@jic23-hlaptop \
--to=jic23@kernel.org \
--cc=andriy.shevchenko@intel.com \
--cc=andy@kernel.org \
--cc=dlechner@baylibre.com \
--cc=gwendal@chromium.org \
--cc=kapoorarnav43@gmail.com \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nuno.sa@analog.com \
--cc=swboyd@chromium.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®