> From: Rosen Penev <[email protected]> > [...] > 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 <[email protected]> > --- > 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 <[email protected]>

