RE: [PATCH] EDAC: sb_edac: use kzalloc_flex

From: Zhuo, Qiuxu

Date: Wed Mar 11 2026 - 22:30:28 EST



> From: Rosen Penev <rosenp@xxxxxxxxx>
> [...]
> Subject: [PATCH] EDAC: sb_edac: use kzalloc_flex

Could you use this style of subject:

EDAC/sb: Use kzalloc_flex()

>
> Simplifies allocations by using a flexible array member in this struct.
>
> Add __counted_by to get extra runtime analysis.
>
> Signed-off-by: Rosen Penev <rosenp@xxxxxxxxx>
> ---
> drivers/edac/sb_edac.c | 14 +++-----------
> 1 file changed, 3 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c index
> 09d4e816404b..7b282dfd093f 100644
> --- a/drivers/edac/sb_edac.c
> +++ b/drivers/edac/sb_edac.c
> @@ -364,11 +364,11 @@ struct sbridge_dev {
> int seg;
> u8 bus, mc;
> u8 node_id, source_id;
> - struct pci_dev **pdev;
> enum domain dom;
> int n_devs;
> int i_devs;
> struct mem_ctl_info *mci;
> + struct pci_dev *pdev[] __counted_by(n_devs);
> };
>
> struct knl_pvt {
> @@ -771,21 +771,14 @@ static struct sbridge_dev *alloc_sbridge_dev(int
> seg, u8 bus, enum domain dom, {
> struct sbridge_dev *sbridge_dev;
>
> - sbridge_dev = kzalloc_obj(*sbridge_dev);
> + sbridge_dev = kzalloc_flex(*sbridge_dev, pdev, table-
> >n_devs_per_imc);
> if (!sbridge_dev)
> return NULL;
>
> - sbridge_dev->pdev = kzalloc_objs(*sbridge_dev->pdev,
> - table->n_devs_per_imc);
> - if (!sbridge_dev->pdev) {
> - kfree(sbridge_dev);
> - return NULL;
> - }
> -
> + sbridge_dev->n_devs = table->n_devs_per_imc;

What's the reason for moving this line of code up here?

> sbridge_dev->seg = seg;
> sbridge_dev->bus = bus;
> sbridge_dev->dom = dom;
> - sbridge_dev->n_devs = table->n_devs_per_imc;
> list_add_tail(&sbridge_dev->list, &sbridge_edac_list);
> [...]

Other than the comments above:

Reviewed-by: Qiuxu Zhuo <qiuxu.zhuo@xxxxxxxxx>