lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20250713145931.16d98029@jic23-huawei>
Date: Sun, 13 Jul 2025 14:59:31 +0100
From: Jonathan Cameron <jic23@...nel.org>
To: David Lechner <dlechner@...libre.com>
Cc: Nuno Sá <nuno.sa@...log.com>, Andy Shevchenko
 <andy@...nel.org>, linux-iio@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] iio: proximity: sx_common: use stack allocated buffer
 for scan data

On Fri, 11 Jul 2025 10:55:07 -0500
David Lechner <dlechner@...libre.com> wrote:

> Use IIO_DECLARE_BUFFER_WITH_TS() to declare a stack allocated buffer
> in sx_common_trigger_handler(). Since the scan buffer isn't used outside
> of this function and doesn't need to be DMA-safe, it doesn't need to be
> in struct sx_common_data.
> 
> Signed-off-by: David Lechner <dlechner@...libre.com>
Same question - why not the structure which is more descriptive than
the buffer macro?  To me that's cleaner when we can do it with the magic
of the buffer macro being great when we can't because we have more than
8 bytes of potential channels before the timestamp.

> ---
>  drivers/iio/proximity/sx_common.c | 7 ++++---
>  drivers/iio/proximity/sx_common.h | 6 ------
>  2 files changed, 4 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/iio/proximity/sx_common.c b/drivers/iio/proximity/sx_common.c
> index 59b35e40739b0d931dbac076ca5c83ba421ba766..fae035e8d2f5a40ed7379dd6e306f84878a9bef0 100644
> --- a/drivers/iio/proximity/sx_common.c
> +++ b/drivers/iio/proximity/sx_common.c
> @@ -361,6 +361,7 @@ static irqreturn_t sx_common_irq_thread_handler(int irq, void *private)
>  
>  static irqreturn_t sx_common_trigger_handler(int irq, void *private)
>  {
> +	IIO_DECLARE_BUFFER_WITH_TS(__be16, buffer, SX_COMMON_MAX_NUM_CHANNELS);
>  	struct iio_poll_func *pf = private;
>  	struct iio_dev *indio_dev = pf->indio_dev;
>  	struct sx_common_data *data = iio_priv(indio_dev);
> @@ -376,11 +377,11 @@ static irqreturn_t sx_common_trigger_handler(int irq, void *private)
>  		if (ret)
>  			goto out;
>  
> -		data->buffer.channels[i++] = val;
> +		buffer[i++] = val;
>  	}
>  
> -	iio_push_to_buffers_with_ts(indio_dev, &data->buffer,
> -				    sizeof(data->buffer), pf->timestamp);
> +	iio_push_to_buffers_with_ts(indio_dev, buffer, sizeof(buffer),
> +				    pf->timestamp);
>  
>  out:
>  	mutex_unlock(&data->mutex);
> diff --git a/drivers/iio/proximity/sx_common.h b/drivers/iio/proximity/sx_common.h
> index 259b5c695233b4e295ad8ae2b05fceeaa4a7ae61..97b264aa50b0c9811ce6b42be34eace03eae2627 100644
> --- a/drivers/iio/proximity/sx_common.h
> +++ b/drivers/iio/proximity/sx_common.h
> @@ -122,12 +122,6 @@ struct sx_common_data {
>  	unsigned long chan_prox_stat;
>  	bool trigger_enabled;
>  
> -	/* Ensure correct alignment of timestamp when present. */
> -	struct {
> -		__be16 channels[SX_COMMON_MAX_NUM_CHANNELS];
> -		aligned_s64 ts;
> -	} buffer;
> -
>  	unsigned int suspend_ctrl;
>  	unsigned long chan_read;
>  	unsigned long chan_event;
> 
> ---
> base-commit: f8f559752d573a051a984adda8d2d1464f92f954
> change-id: 20250711-iio-use-more-iio_declare_buffer_with_ts-5-f4c91d73037d
> 
> Best regards,


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ