On Fri, Apr 24, 2026 at 06:42:01PM -0700, Rosen Penev wrote: > A flexible array member can be used to combine allocations and simplify > handling slightly. > > Add __counted_by for extra runtime analysis. > > Signed-off-by: Rosen Penev <[email protected]>
Reviewed-by: Heikki Krogerus <[email protected]> > --- > drivers/usb/typec/mux/intel_pmc_mux.c | 19 +++++++++---------- > 1 file changed, 9 insertions(+), 10 deletions(-) > > diff --git a/drivers/usb/typec/mux/intel_pmc_mux.c > b/drivers/usb/typec/mux/intel_pmc_mux.c > index 1698428654ab..e22b070a140f 100644 > --- a/drivers/usb/typec/mux/intel_pmc_mux.c > +++ b/drivers/usb/typec/mux/intel_pmc_mux.c > @@ -151,13 +151,14 @@ struct pmc_usb { > u8 num_ports; > struct device *dev; > struct intel_scu_ipc_dev *ipc; > - struct pmc_usb_port *port; > struct acpi_device *iom_adev; > void __iomem *iom_base; > u32 iom_port_status_offset; > u8 iom_port_status_size; > > struct dentry *dentry; > + > + struct pmc_usb_port port[] __counted_by(num_ports); > }; > > static struct dentry *pmc_mux_debugfs_root; > @@ -731,27 +732,25 @@ static int pmc_usb_probe(struct platform_device *pdev) > { > struct fwnode_handle *fwnode = NULL; > struct pmc_usb *pmc; > + u8 num_ports; > int i = 0; > int ret; > > - pmc = devm_kzalloc(&pdev->dev, sizeof(*pmc), GFP_KERNEL); > - if (!pmc) > - return -ENOMEM; > - > device_for_each_child_node(&pdev->dev, fwnode) > - pmc->num_ports++; > + num_ports++; > > /* The IOM microcontroller has a limitation of max 4 ports. */ > - if (pmc->num_ports > 4) { > + if (num_ports > 4) { > dev_err(&pdev->dev, "driver limited to 4 ports\n"); > return -ERANGE; > } > > - pmc->port = devm_kcalloc(&pdev->dev, pmc->num_ports, > - sizeof(struct pmc_usb_port), GFP_KERNEL); > - if (!pmc->port) > + pmc = devm_kzalloc(&pdev->dev, struct_size(pmc, port, num_ports), > GFP_KERNEL); > + if (!pmc) > return -ENOMEM; > > + pmc->num_ports = num_ports; > + > pmc->ipc = devm_intel_scu_ipc_dev_get(&pdev->dev); > if (!pmc->ipc) > return -EPROBE_DEFER; > -- > 2.54.0 -- heikki

