mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
EDAC/sb: Use kzalloc_flex()
Simplifies allocations by using a flexible array member in this struct. Add __counted_by to get extra runtime analysis. Move counting variable assignment immediately after allocation as required by __counted_by. Signed-off-by: Rosen Penev <rosenp@gmail.com> Signed-off-by: Tony Luck <tony.luck@intel.com> Reviewed-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com> Link: https://patch.msgid.link/20260313215637.6371-1-rosenp@gmail.com
This commit is contained in:
@@ -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;
|
||||
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);
|
||||
|
||||
return sbridge_dev;
|
||||
@@ -794,7 +787,6 @@ static struct sbridge_dev *alloc_sbridge_dev(int seg, u8 bus, enum domain dom,
|
||||
static void free_sbridge_dev(struct sbridge_dev *sbridge_dev)
|
||||
{
|
||||
list_del(&sbridge_dev->list);
|
||||
kfree(sbridge_dev->pdev);
|
||||
kfree(sbridge_dev);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user