On Fri, Apr 10, 2026 at 08:57:31PM -0700, Rosen Penev wrote: > Use a flexible array member to combine allocations. Allows removal of a > pointless branch. A size of 0 means phys are not allocated. > > Add __counted_by for extra runtime analysis. > > Signed-off-by: Rosen Penev <[email protected]> > --- > drivers/usb/mtu3/mtu3.h | 2 +- > drivers/usb/mtu3/mtu3_plat.c | 18 ++++++------------ > 2 files changed, 7 insertions(+), 13 deletions(-) > > diff --git a/drivers/usb/mtu3/mtu3.h b/drivers/usb/mtu3/mtu3.h > index ba5a63669e5f..d71849388602 100644 > --- a/drivers/usb/mtu3/mtu3.h > +++ b/drivers/usb/mtu3/mtu3.h > @@ -252,7 +252,6 @@ struct ssusb_mtk { > struct mtu3 *u3d; > void __iomem *mac_base; > void __iomem *ippc_base; > - struct phy **phys; > int num_phys; > int wakeup_irq; > /* common power & clock */ > @@ -272,6 +271,7 @@ struct ssusb_mtk { > struct regmap *uwk; > u32 uwk_reg_base; > u32 uwk_vers; > + struct phy *phys[] __counted_by(num_phys); > }; > > /** > diff --git a/drivers/usb/mtu3/mtu3_plat.c b/drivers/usb/mtu3/mtu3_plat.c > index cc8a864dbd63..11a919fc3d47 100644 > --- a/drivers/usb/mtu3/mtu3_plat.c > +++ b/drivers/usb/mtu3/mtu3_plat.c > @@ -240,17 +240,6 @@ static int get_ssusb_rscs(struct platform_device *pdev, > struct ssusb_mtk *ssusb) > if (ret) > return ret; > > - ssusb->num_phys = of_count_phandle_with_args(node, > - "phys", "#phy-cells"); > - if (ssusb->num_phys > 0) { > - ssusb->phys = devm_kcalloc(dev, ssusb->num_phys, > - sizeof(*ssusb->phys), GFP_KERNEL); > - if (!ssusb->phys) > - return -ENOMEM; > - } else { > - ssusb->num_phys = 0; > - } > - > for (i = 0; i < ssusb->num_phys; i++) { > ssusb->phys[i] = devm_of_phy_get_by_index(dev, node, i); > if (IS_ERR(ssusb->phys[i])) { > @@ -330,12 +319,17 @@ static int mtu3_probe(struct platform_device *pdev) > struct device *dev = &pdev->dev; > struct ssusb_mtk *ssusb; > int ret = -ENOMEM; > + int num_phys; > > + num_phys = of_count_phandle_with_args(dev->of_node, > + "phys", "#phy-cells");
You just caused a bug here if this returns a negative value. How was this tested? And why is it even needed? thanks, greg k-h

