public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] iio: adc: nxp-sar-adc: zero-initialize dma_slave_config
@ 2026-04-06  9:53 Shuvam Pandey
  2026-04-06 13:59 ` David Lechner
  0 siblings, 1 reply; 3+ messages in thread
From: Shuvam Pandey @ 2026-04-06  9:53 UTC (permalink / raw)
  To: Jonathan Cameron, David Lechner
  Cc: Nuno Sá, Andy Shevchenko, linux-iio, linux-kernel,
	Shuvam Pandey

nxp_sar_adc_start_cyclic_dma() only fills the RX-side members of
dma_slave_config before passing it to dmaengine_slave_config().

Zero-initialize the structure so unused members do not contain stack
garbage. Some DMA engines consult optional dma_slave_config fields, so
leaving them uninitialized can cause DMA setup failures.

Fixes: 4434072a893e ("iio: adc: Add the NXP SAR ADC support for the s32g2/3 platforms")
Signed-off-by: Shuvam Pandey <shuvampandey1@gmail.com>
---
 drivers/iio/adc/nxp-sar-adc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/adc/nxp-sar-adc.c b/drivers/iio/adc/nxp-sar-adc.c
index 9efa883c277d..7d7b5a580167 100644
--- a/drivers/iio/adc/nxp-sar-adc.c
+++ b/drivers/iio/adc/nxp-sar-adc.c
@@ -659,7 +659,7 @@ static void nxp_sar_adc_dma_cb(void *data)
 static int nxp_sar_adc_start_cyclic_dma(struct iio_dev *indio_dev)
 {
 	struct nxp_sar_adc *info = iio_priv(indio_dev);
-	struct dma_slave_config config;
+	struct dma_slave_config config = {};
 	struct dma_async_tx_descriptor *desc;
 	int ret;
 
-- 
2.50.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] iio: adc: nxp-sar-adc: zero-initialize dma_slave_config
  2026-04-06  9:53 [PATCH] iio: adc: nxp-sar-adc: zero-initialize dma_slave_config Shuvam Pandey
@ 2026-04-06 13:59 ` David Lechner
  2026-04-20 18:07   ` Jonathan Cameron
  0 siblings, 1 reply; 3+ messages in thread
From: David Lechner @ 2026-04-06 13:59 UTC (permalink / raw)
  To: Shuvam Pandey, Jonathan Cameron
  Cc: Nuno Sá, Andy Shevchenko, linux-iio, linux-kernel

On 4/6/26 4:53 AM, Shuvam Pandey wrote:
> nxp_sar_adc_start_cyclic_dma() only fills the RX-side members of
> dma_slave_config before passing it to dmaengine_slave_config().
> 
> Zero-initialize the structure so unused members do not contain stack
> garbage. Some DMA engines consult optional dma_slave_config fields, so
> leaving them uninitialized can cause DMA setup failures.
> 
> Fixes: 4434072a893e ("iio: adc: Add the NXP SAR ADC support for the s32g2/3 platforms")
> Signed-off-by: Shuvam Pandey <shuvampandey1@gmail.com>
> ---
>  drivers/iio/adc/nxp-sar-adc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/adc/nxp-sar-adc.c b/drivers/iio/adc/nxp-sar-adc.c
> index 9efa883c277d..7d7b5a580167 100644
> --- a/drivers/iio/adc/nxp-sar-adc.c
> +++ b/drivers/iio/adc/nxp-sar-adc.c
> @@ -659,7 +659,7 @@ static void nxp_sar_adc_dma_cb(void *data)
>  static int nxp_sar_adc_start_cyclic_dma(struct iio_dev *indio_dev)
>  {
>  	struct nxp_sar_adc *info = iio_priv(indio_dev);
> -	struct dma_slave_config config;
> +	struct dma_slave_config config = {};

IIO style is to have space between braces.

Wait and see if Jonathan asks for a new version first though
before sending one for trivial changes like that.

>  	struct dma_async_tx_descriptor *desc;
>  	int ret;
>  

Reviewed-by: David Lechner <dlechner@baylibre.com>


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] iio: adc: nxp-sar-adc: zero-initialize dma_slave_config
  2026-04-06 13:59 ` David Lechner
@ 2026-04-20 18:07   ` Jonathan Cameron
  0 siblings, 0 replies; 3+ messages in thread
From: Jonathan Cameron @ 2026-04-20 18:07 UTC (permalink / raw)
  To: David Lechner
  Cc: Shuvam Pandey, Nuno Sá, Andy Shevchenko, linux-iio,
	linux-kernel

On Mon, 6 Apr 2026 08:59:34 -0500
David Lechner <dlechner@baylibre.com> wrote:

> On 4/6/26 4:53 AM, Shuvam Pandey wrote:
> > nxp_sar_adc_start_cyclic_dma() only fills the RX-side members of
> > dma_slave_config before passing it to dmaengine_slave_config().
> > 
> > Zero-initialize the structure so unused members do not contain stack
> > garbage. Some DMA engines consult optional dma_slave_config fields, so
> > leaving them uninitialized can cause DMA setup failures.
> > 
> > Fixes: 4434072a893e ("iio: adc: Add the NXP SAR ADC support for the s32g2/3 platforms")
> > Signed-off-by: Shuvam Pandey <shuvampandey1@gmail.com>
> > ---
> >  drivers/iio/adc/nxp-sar-adc.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/iio/adc/nxp-sar-adc.c b/drivers/iio/adc/nxp-sar-adc.c
> > index 9efa883c277d..7d7b5a580167 100644
> > --- a/drivers/iio/adc/nxp-sar-adc.c
> > +++ b/drivers/iio/adc/nxp-sar-adc.c
> > @@ -659,7 +659,7 @@ static void nxp_sar_adc_dma_cb(void *data)
> >  static int nxp_sar_adc_start_cyclic_dma(struct iio_dev *indio_dev)
> >  {
> >  	struct nxp_sar_adc *info = iio_priv(indio_dev);
> > -	struct dma_slave_config config;
> > +	struct dma_slave_config config = {};  
> 
> IIO style is to have space between braces.
> 
> Wait and see if Jonathan asks for a new version first though
> before sending one for trivial changes like that.
> 
> >  	struct dma_async_tx_descriptor *desc;
> >  	int ret;
> >    
> 
> Reviewed-by: David Lechner <dlechner@baylibre.com>
> 
Note I picked this up and tweaked as above, so the following is
just thoughts on how we might do similar in future. 

It is a bigger change but maybe it's worth 

	struct dma_slave_config config;

...

	config = (struct dma_slave_config) {
		.direction = DMA_DEV_TO_MEM,
		.src_addr_width = NXP_SAR_ADC_DMA_SAMPLE_SZ,
		.src_addr = NXP_SAR_ADC_CDR(info->regs_phys, info->buffered_chan[0]),
		.src_port_window_size = info->channels_used,
		.src_maxburst = info->channels_used,
	};
Which will ensure whole thing is set at the point of use rather than clear
and then fill stuff in later as this patch does.

Given this has been sat a while, lets go for good enough and it's a more
minimal patch which is always nice for a fix.

Applied to the fixes-togreg branch of iio.git and marked for
stable.

Thanks,

Jonathan


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-04-20 18:07 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-06  9:53 [PATCH] iio: adc: nxp-sar-adc: zero-initialize dma_slave_config Shuvam Pandey
2026-04-06 13:59 ` David Lechner
2026-04-20 18:07   ` Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox