[PATCH v2] iio: adc: ti-ads1018: fix type overflow for data rate

Chunyang Chen posted 1 patch 1 month ago
drivers/iio/adc/ti-ads1018.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH v2] iio: adc: ti-ads1018: fix type overflow for data rate
Posted by Chunyang Chen 1 month ago
The variable 'drate' is currently defined as u8. However, the data rate
values in ads1018 can reach up to 3300 Hz, which exceeds the maximum
value of 255 that a u8 can hold.

Change the type of 'drate' to u32 to match the data_rate_mode_to_hz
array definition and ensure the data rate is handled correctly.

Fixes: bf0bba486b5b ("iio: adc: ti-ads1018: add ti-ads1018 driver")
Signed-off-by: Chunyang Chen <chenchunyang0908@gmail.com>

---
v2:
- Change drate type to u32 as suggested by Kurt.
- Add Fixes tag as requested by Andy.
---
 drivers/iio/adc/ti-ads1018.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/adc/ti-ads1018.c b/drivers/iio/adc/ti-ads1018.c
index 6246b3cab..0780abd0d 100644
--- a/drivers/iio/adc/ti-ads1018.c
+++ b/drivers/iio/adc/ti-ads1018.c
@@ -249,7 +249,7 @@ static int ads1018_single_shot(struct ads1018 *ads1018,
 			       struct iio_chan_spec const *chan, u16 *cnv)
 {
 	u8 max_drate_mode = ads1018->chip_info->num_data_rate_mode_to_hz - 1;
-	u8 drate = ads1018->chip_info->data_rate_mode_to_hz[max_drate_mode];
+	u32 drate = ads1018->chip_info->data_rate_mode_to_hz[max_drate_mode];
 	u8 pga_mode = ads1018->chan_data[chan->scan_index].pga_mode;
 	struct spi_transfer xfer[2] = {
 		{
-- 
2.34.1
Re: [PATCH v2] iio: adc: ti-ads1018: fix type overflow for data rate
Posted by Jonathan Cameron 1 month ago
On Thu,  5 Mar 2026 20:43:02 +0800
Chunyang Chen <chenchunyang0908@gmail.com> wrote:

> The variable 'drate' is currently defined as u8. However, the data rate
> values in ads1018 can reach up to 3300 Hz, which exceeds the maximum
> value of 255 that a u8 can hold.
> 
> Change the type of 'drate' to u32 to match the data_rate_mode_to_hz
> array definition and ensure the data rate is handled correctly.
> 
> Fixes: bf0bba486b5b ("iio: adc: ti-ads1018: add ti-ads1018 driver")
The patch name in this fixes tag is wrong.  I fixed up.

J
> Signed-off-by: Chunyang Chen <chenchunyang0908@gmail.com>
> 
> ---
> v2:
> - Change drate type to u32 as suggested by Kurt.
> - Add Fixes tag as requested by Andy.
> ---
>  drivers/iio/adc/ti-ads1018.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/adc/ti-ads1018.c b/drivers/iio/adc/ti-ads1018.c
> index 6246b3cab..0780abd0d 100644
> --- a/drivers/iio/adc/ti-ads1018.c
> +++ b/drivers/iio/adc/ti-ads1018.c
> @@ -249,7 +249,7 @@ static int ads1018_single_shot(struct ads1018 *ads1018,
>  			       struct iio_chan_spec const *chan, u16 *cnv)
>  {
>  	u8 max_drate_mode = ads1018->chip_info->num_data_rate_mode_to_hz - 1;
> -	u8 drate = ads1018->chip_info->data_rate_mode_to_hz[max_drate_mode];
> +	u32 drate = ads1018->chip_info->data_rate_mode_to_hz[max_drate_mode];
>  	u8 pga_mode = ads1018->chan_data[chan->scan_index].pga_mode;
>  	struct spi_transfer xfer[2] = {
>  		{
Re: [PATCH v2] iio: adc: ti-ads1018: fix type overflow for data rate
Posted by Chunyang Chen 1 month ago
Hi Jonathan, Andy, Kurt,

Thanks for the review and for applying this patch to iio/fixes-togreg!
Also, thanks Jonathan for fixing up the patch name in the Fixes tag.

Best regards,
Chunyang Chen
Re: [PATCH v2] iio: adc: ti-ads1018: fix type overflow for data rate
Posted by Andy Shevchenko 1 month ago
On Thu, Mar 05, 2026 at 08:43:02PM +0800, Chunyang Chen wrote:
> The variable 'drate' is currently defined as u8. However, the data rate
> values in ads1018 can reach up to 3300 Hz, which exceeds the maximum
> value of 255 that a u8 can hold.
> 
> Change the type of 'drate' to u32 to match the data_rate_mode_to_hz
> array definition and ensure the data rate is handled correctly.
> 
> Fixes: bf0bba486b5b ("iio: adc: ti-ads1018: add ti-ads1018 driver")
> Signed-off-by: Chunyang Chen <chenchunyang0908@gmail.com>

New version — new email thread.
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>

-- 
With Best Regards,
Andy Shevchenko


Re: [PATCH v2] iio: adc: ti-ads1018: fix type overflow for data rate
Posted by Jonathan Cameron 1 month ago
On Fri, 6 Mar 2026 14:08:15 +0200
Andy Shevchenko <andriy.shevchenko@intel.com> wrote:

> On Thu, Mar 05, 2026 at 08:43:02PM +0800, Chunyang Chen wrote:
> > The variable 'drate' is currently defined as u8. However, the data rate
> > values in ads1018 can reach up to 3300 Hz, which exceeds the maximum
> > value of 255 that a u8 can hold.
> > 
> > Change the type of 'drate' to u32 to match the data_rate_mode_to_hz
> > array definition and ensure the data rate is handled correctly.
> > 
> > Fixes: bf0bba486b5b ("iio: adc: ti-ads1018: add ti-ads1018 driver")
> > Signed-off-by: Chunyang Chen <chenchunyang0908@gmail.com>  
> 
> New version — new email thread.
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
> 

Applied to the fixes-togreg branch of iio.git

Thanks,

Jonathan
Re: [PATCH v2] iio: adc: ti-ads1018: fix type overflow for data rate
Posted by Kurt Borja 1 month ago
On Thu Mar 5, 2026 at 9:43 AM -03, Chunyang Chen wrote:
> The variable 'drate' is currently defined as u8. However, the data rate
> values in ads1018 can reach up to 3300 Hz, which exceeds the maximum
> value of 255 that a u8 can hold.
>
> Change the type of 'drate' to u32 to match the data_rate_mode_to_hz
> array definition and ensure the data rate is handled correctly.
>
> Fixes: bf0bba486b5b ("iio: adc: ti-ads1018: add ti-ads1018 driver")
> Signed-off-by: Chunyang Chen <chenchunyang0908@gmail.com>

Reviewed-by: Kurt Borja <kuurtb@gmail.com>

>
> ---
> v2:
> - Change drate type to u32 as suggested by Kurt.
> - Add Fixes tag as requested by Andy.
> ---
>  drivers/iio/adc/ti-ads1018.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/iio/adc/ti-ads1018.c b/drivers/iio/adc/ti-ads1018.c
> index 6246b3cab..0780abd0d 100644
> --- a/drivers/iio/adc/ti-ads1018.c
> +++ b/drivers/iio/adc/ti-ads1018.c
> @@ -249,7 +249,7 @@ static int ads1018_single_shot(struct ads1018 *ads1018,
>  			       struct iio_chan_spec const *chan, u16 *cnv)
>  {
>  	u8 max_drate_mode = ads1018->chip_info->num_data_rate_mode_to_hz - 1;
> -	u8 drate = ads1018->chip_info->data_rate_mode_to_hz[max_drate_mode];
> +	u32 drate = ads1018->chip_info->data_rate_mode_to_hz[max_drate_mode];
>  	u8 pga_mode = ads1018->chan_data[chan->scan_index].pga_mode;
>  	struct spi_transfer xfer[2] = {
>  		{

-- 
Thanks,
 ~ Kurt