Re: [PATCH] crypto: eip93 - use struct_size() and flexible array for ring allocation

Thomas Huth <[email protected]> Tue, 4 Aug 2026 09:10:56 +0200
Newsgroups org.kernel.vger.linux-crypto,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On 04/08/2026 00.40, Rosen Penev wrote:
> Embed the single ring as a flexible array member in eip93_device
> instead of allocating it separately. This simplifies the probe path
> and uses struct_size() for a single allocation.
> 
> Assisted-by: opencode:big-pickle
> Signed-off-by: Rosen Penev <[email protected]>
> ---
>   .../crypto/inside-secure/eip93/eip93-main.c   |  6 +----
>   .../crypto/inside-secure/eip93/eip93-main.h   | 22 +++++++++----------
>   2 files changed, 12 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/crypto/inside-secure/eip93/eip93-main.c b/drivers/crypto/inside-secure/eip93/eip93-main.c
> index 1a8dabc4ada4..e62785952b0d 100644
> --- a/drivers/crypto/inside-secure/eip93/eip93-main.c
> +++ b/drivers/crypto/inside-secure/eip93/eip93-main.c
> @@ -415,7 +415,7 @@ static int eip93_crypto_probe(struct platform_device *pdev)
>   	u32 ver, algo_flags;
>   	int ret;
>   
> -	eip93 = devm_kzalloc(dev, sizeof(*eip93), GFP_KERNEL);
> +	eip93 = devm_kzalloc(dev, struct_size(eip93, ring, 1), GFP_KERNEL);
>   	if (!eip93)
>   		return -ENOMEM;
>   
> @@ -436,10 +436,6 @@ static int eip93_crypto_probe(struct platform_device *pdev)
>   	if (ret)
>   		return ret;
>   
> -	eip93->ring = devm_kcalloc(eip93->dev, 1, sizeof(*eip93->ring), GFP_KERNEL);
> -	if (!eip93->ring)
> -		return -ENOMEM;
> -
>   	ret = eip93_desc_init(eip93);
>   	if (ret)
>   		return ret;
> diff --git a/drivers/crypto/inside-secure/eip93/eip93-main.h b/drivers/crypto/inside-secure/eip93/eip93-main.h
> index 990c2401b7ce..5f0f51081743 100644
> --- a/drivers/crypto/inside-secure/eip93/eip93-main.h
> +++ b/drivers/crypto/inside-secure/eip93/eip93-main.h
> @@ -92,17 +92,6 @@
>   						    EIP93_HASH_SHA224 | \
>   						    EIP93_HASH_SHA256))
>   
> -/**
> - * struct eip93_device - crypto engine device structure
> - */
> -struct eip93_device {
> -	void __iomem		*base;
> -	struct device		*dev;
> -	struct clk		*clk;
> -	int			irq;
> -	struct eip93_ring		*ring;
> -};
> -
>   struct eip93_desc_ring {
>   	void			*base;
>   	void			*base_end;
> @@ -131,6 +120,17 @@ struct eip93_ring {
>   	struct idr			crypto_async_idr;
>   };
>   
> +/**
> + * struct eip93_device - crypto engine device structure
> + */
> +struct eip93_device {
> +	void __iomem		*base;
> +	struct device		*dev;
> +	struct clk		*clk;
> +	int			irq;
> +	struct eip93_ring	ring[];
> +};
This looks weird, too. If there is always only one "ring", why don't you 
embed it without the "[]" into the struct eip93_device directly?

  Thomas