Re: [PATCH] crypto: eip93 - use struct_size() and flexible array for ring allocation
Rosen Penev <[email protected]> Tue, 4 Aug 2026 00:18:14 -0700
| Newsgroups | org.kernel.vger.linux-crypto,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CAKxU2N9=qABcpCoQSJ+LeLu0nZj-XBdhetoecwsfRGky+Vgc9w@mail.gmail.com> |
On Tue, Aug 4, 2026 at 12:11=E2=80=AFAM Thomas Huth <[email protected]> wrot= e: > > 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_devic= e *pdev) > > u32 ver, algo_flags; > > int ret; > > > > - eip93 =3D devm_kzalloc(dev, sizeof(*eip93), GFP_KERNEL); > > + eip93 =3D devm_kzalloc(dev, struct_size(eip93, ring, 1), GFP_KERN= EL); > > if (!eip93) > > return -ENOMEM; > > > > @@ -436,10 +436,6 @@ static int eip93_crypto_probe(struct platform_devi= ce *pdev) > > if (ret) > > return ret; > > > > - eip93->ring =3D devm_kcalloc(eip93->dev, 1, sizeof(*eip93->ring),= GFP_KERNEL); > > - if (!eip93->ring) > > - return -ENOMEM; > > - > > ret =3D 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? keeps all callers the same. -> vs . > > Thomas >