[PATCH v2 01/11] iio: adc: ad_sigma_delta: don't overallocate scan buffer

David Lechner posted 11 patches 7 months, 2 weeks ago
There is a newer version of this series
[PATCH v2 01/11] iio: adc: ad_sigma_delta: don't overallocate scan buffer
Posted by David Lechner 7 months, 2 weeks ago
Fix overallocating the size of the scan buffer by converting bits to
bytes. The size is meant to be in bytes, so scanbits needs to be
divided by 8.

Signed-off-by: David Lechner <dlechner@baylibre.com>
---
 drivers/iio/adc/ad_sigma_delta.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_delta.c
index 4c5f8d29a559fea7226b84141bcb148fb801f62c..6b3ef7ef403e00804abeb81025ed293b188e492b 100644
--- a/drivers/iio/adc/ad_sigma_delta.c
+++ b/drivers/iio/adc/ad_sigma_delta.c
@@ -489,7 +489,7 @@ static int ad_sd_buffer_postenable(struct iio_dev *indio_dev)
 			return ret;
 	}
 
-	samples_buf_size = ALIGN(slot * indio_dev->channels[0].scan_type.storagebits, 8);
+	samples_buf_size = ALIGN(slot * indio_dev->channels[0].scan_type.storagebits / 8, 8);
 	samples_buf_size += sizeof(int64_t);
 	samples_buf = devm_krealloc(&sigma_delta->spi->dev, sigma_delta->samples_buf,
 				    samples_buf_size, GFP_KERNEL);

-- 
2.43.0
Re: [PATCH v2 01/11] iio: adc: ad_sigma_delta: don't overallocate scan buffer
Posted by Jonathan Cameron 7 months, 2 weeks ago
On Fri, 27 Jun 2025 18:39:57 -0500
David Lechner <dlechner@baylibre.com> wrote:

> Fix overallocating the size of the scan buffer by converting bits to
> bytes. The size is meant to be in bytes, so scanbits needs to be
> divided by 8.
> 
> Signed-off-by: David Lechner <dlechner@baylibre.com>
> ---
>  drivers/iio/adc/ad_sigma_delta.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_delta.c
> index 4c5f8d29a559fea7226b84141bcb148fb801f62c..6b3ef7ef403e00804abeb81025ed293b188e492b 100644
> --- a/drivers/iio/adc/ad_sigma_delta.c
> +++ b/drivers/iio/adc/ad_sigma_delta.c
> @@ -489,7 +489,7 @@ static int ad_sd_buffer_postenable(struct iio_dev *indio_dev)
>  			return ret;
>  	}
>  
> -	samples_buf_size = ALIGN(slot * indio_dev->channels[0].scan_type.storagebits, 8);
> +	samples_buf_size = ALIGN(slot * indio_dev->channels[0].scan_type.storagebits / 8, 8);

Seems like a good place for BITS_TO_BYTES() from bitops.h.  Given we have another 8
kicking around in the same code line it might be a tiny bit confusing as / 8

If everything else is good I'll tweak this whilst applying (and add the include if needed).

>  	samples_buf_size += sizeof(int64_t);
>  	samples_buf = devm_krealloc(&sigma_delta->spi->dev, sigma_delta->samples_buf,
>  				    samples_buf_size, GFP_KERNEL);
>
Re: [PATCH v2 01/11] iio: adc: ad_sigma_delta: don't overallocate scan buffer
Posted by Jonathan Cameron 7 months, 2 weeks ago
On Sat, 28 Jun 2025 15:55:21 +0100
Jonathan Cameron <jic23@kernel.org> wrote:

> On Fri, 27 Jun 2025 18:39:57 -0500
> David Lechner <dlechner@baylibre.com> wrote:
> 
> > Fix overallocating the size of the scan buffer by converting bits to
> > bytes. The size is meant to be in bytes, so scanbits needs to be
> > divided by 8.
> > 
> > Signed-off-by: David Lechner <dlechner@baylibre.com>
> > ---
> >  drivers/iio/adc/ad_sigma_delta.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_delta.c
> > index 4c5f8d29a559fea7226b84141bcb148fb801f62c..6b3ef7ef403e00804abeb81025ed293b188e492b 100644
> > --- a/drivers/iio/adc/ad_sigma_delta.c
> > +++ b/drivers/iio/adc/ad_sigma_delta.c
> > @@ -489,7 +489,7 @@ static int ad_sd_buffer_postenable(struct iio_dev *indio_dev)
> >  			return ret;
> >  	}
> >  
> > -	samples_buf_size = ALIGN(slot * indio_dev->channels[0].scan_type.storagebits, 8);
> > +	samples_buf_size = ALIGN(slot * indio_dev->channels[0].scan_type.storagebits / 8, 8);  
> 
> Seems like a good place for BITS_TO_BYTES() from bitops.h.  Given we have another 8
> kicking around in the same code line it might be a tiny bit confusing as / 8
> 
> If everything else is good I'll tweak this whilst applying (and add the include if needed).

Found it in patch 4.   No problem doing it there.  'Maybe' a hint in the description would
have been a nice to have, but not particularly important.

> 
> >  	samples_buf_size += sizeof(int64_t);
> >  	samples_buf = devm_krealloc(&sigma_delta->spi->dev, sigma_delta->samples_buf,
> >  				    samples_buf_size, GFP_KERNEL);
> >   
>