Use flex array to simplify allocation. Allows using __counted_by for extra runtime analysis.
Signed-off-by: Rosen Penev <[email protected]> --- drivers/phy/st/phy-miphy28lp.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/phy/st/phy-miphy28lp.c b/drivers/phy/st/phy-miphy28lp.c index 43cef89af55e..fd931ede7162 100644 --- a/drivers/phy/st/phy-miphy28lp.c +++ b/drivers/phy/st/phy-miphy28lp.c @@ -224,8 +224,8 @@ struct miphy28lp_dev { struct device *dev; struct regmap *regmap; struct mutex miphy_mutex; - struct miphy28lp_phy **phys; int nphys; + struct miphy28lp_phy *phys[] __counted_by(nphys); }; enum miphy_sata_gen { SATA_GEN1, SATA_GEN2, SATA_GEN3 }; @@ -1168,16 +1168,14 @@ static int miphy28lp_probe(struct platform_device *pdev) struct phy_provider *provider; struct phy *phy; int ret, port = 0; + size_t nphys; - miphy_dev = devm_kzalloc(&pdev->dev, sizeof(*miphy_dev), GFP_KERNEL); + nphys = of_get_child_count(np); + miphy_dev = devm_kzalloc(&pdev->dev, struct_size(wiphy_dev, phys, nphys) ,GFP_KERNEL); if (!miphy_dev) return -ENOMEM; - miphy_dev->nphys = of_get_child_count(np); - miphy_dev->phys = devm_kcalloc(&pdev->dev, miphy_dev->nphys, - sizeof(*miphy_dev->phys), GFP_KERNEL); - if (!miphy_dev->phys) - return -ENOMEM; + miphy_dev->nphys = nphys; miphy_dev->regmap = syscon_regmap_lookup_by_phandle(np, "st,syscfg"); if (IS_ERR(miphy_dev->regmap)) { -- 2.53.0

