public inbox for linux-iio@vger.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Antoniu Miclaus <antoniu.miclaus@analog.com>
Cc: Lars-Peter Clausen <lars@metafoo.de>,
	Alexandru-Catalin Ionita <alexandru-catalin.ionita@nxp.com>,
	"Radu Pirea (NXP OSS)" <radu-nicolae.pirea@oss.nxp.com>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	<linux-iio@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] iio: adc: nxp-sar-adc: fix division by zero in write_raw
Date: Mon, 20 Apr 2026 15:34:18 +0100	[thread overview]
Message-ID: <20260420153418.21ef8f03@jic23-huawei> (raw)
In-Reply-To: <20260401152924.58073-1-antoniu.miclaus@analog.com>

On Wed, 1 Apr 2026 18:29:24 +0300
Antoniu Miclaus <antoniu.miclaus@analog.com> wrote:

> Add a validation check for the sampling frequency value before using it
> as a divisor. A user writing zero or a negative value to the
> sampling_frequency sysfs attribute triggers a division by zero in the
> kernel.
> 
> Also prevent unsigned integer underflow when the computed cycle count is
> smaller than NXP_SAR_ADC_CONV_TIME, which would wrap the u32 inpsamp to
> a huge value.
> 
> Fixes: fdee77dea4b6 ("iio: adc: Add the NXP SAR ADC support for the s32g2/3 platforms")
> Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>

Ideally this would get an ack from someone familiar with the platform but
as it seems right to me I'll queue it up.

Applied and marked for stable.  Given I'll be rebasing anyway on rc1 there
is time to back it out or add tags.

Thanks,

Jonathan

> ---
>  drivers/iio/adc/nxp-sar-adc.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/adc/nxp-sar-adc.c b/drivers/iio/adc/nxp-sar-adc.c
> index a6e4888a8464..c611f1c612e6 100644
> --- a/drivers/iio/adc/nxp-sar-adc.c
> +++ b/drivers/iio/adc/nxp-sar-adc.c
> @@ -560,6 +560,9 @@ static int nxp_sar_adc_write_raw(struct iio_dev *indio_dev, struct iio_chan_spec
>  
>  	switch (mask) {
>  	case IIO_CHAN_INFO_SAMP_FREQ:
> +		if (val <= 0)
> +			return -EINVAL;
> +
>  		/*
>  		 * Configures the sample period duration in terms of the SAR
>  		 * controller clock. The minimum acceptable value is 8.
> @@ -568,7 +571,11 @@ static int nxp_sar_adc_write_raw(struct iio_dev *indio_dev, struct iio_chan_spec
>  		 * sampling timing which gives us the number of cycles expected.
>  		 * The value is 8-bit wide, consequently the max value is 0xFF.
>  		 */
> -		inpsamp = clk_get_rate(info->clk) / val - NXP_SAR_ADC_CONV_TIME;
> +		inpsamp = clk_get_rate(info->clk) / val;
> +		if (inpsamp < NXP_SAR_ADC_CONV_TIME)
> +			return -EINVAL;
> +
> +		inpsamp -= NXP_SAR_ADC_CONV_TIME;
>  		nxp_sar_adc_conversion_timing_set(info, inpsamp);
>  		return 0;
>  


      reply	other threads:[~2026-04-20 14:34 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-01 15:29 [PATCH] iio: adc: nxp-sar-adc: fix division by zero in write_raw Antoniu Miclaus
2026-04-20 14:34 ` Jonathan Cameron [this message]

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=20260420153418.21ef8f03@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=alexandru-catalin.ionita@nxp.com \
    --cc=antoniu.miclaus@analog.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=radu-nicolae.pirea@oss.nxp.com \
    /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