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


Reply via email to