mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
usb: typec: intel_pmc_mux: combine kzalloc + kcalloc
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 <rosenp@gmail.com> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Link: https://patch.msgid.link/20260425014201.439251-1-rosenp@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b38fa168a8
commit
8bdb0b3830
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user