[PATCH] usb: mtu3: allocate phys with ssusb
Greg Kroah-Hartman
gregkh at linuxfoundation.org
Fri Jul 3 02:45:05 PDT 2026
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 <rosenp at gmail.com>
> ---
> 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
More information about the linux-arm-kernel
mailing list