[PATCH] crypto: eip93 - use struct_size() and flexible array for ring allocation
Rosen Penev <[email protected]> Mon, 3 Aug 2026 15:40:28 -0700
| Newsgroups | org.kernel.vger.linux-crypto,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
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[]; +}; + enum eip93_alg_type { EIP93_ALG_TYPE_AEAD, EIP93_ALG_TYPE_SKCIPHER, -- 2.55.0