mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +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;
|
u8 num_ports;
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
struct intel_scu_ipc_dev *ipc;
|
struct intel_scu_ipc_dev *ipc;
|
||||||
struct pmc_usb_port *port;
|
|
||||||
struct acpi_device *iom_adev;
|
struct acpi_device *iom_adev;
|
||||||
void __iomem *iom_base;
|
void __iomem *iom_base;
|
||||||
u32 iom_port_status_offset;
|
u32 iom_port_status_offset;
|
||||||
u8 iom_port_status_size;
|
u8 iom_port_status_size;
|
||||||
|
|
||||||
struct dentry *dentry;
|
struct dentry *dentry;
|
||||||
|
|
||||||
|
struct pmc_usb_port port[] __counted_by(num_ports);
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct dentry *pmc_mux_debugfs_root;
|
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 fwnode_handle *fwnode = NULL;
|
||||||
struct pmc_usb *pmc;
|
struct pmc_usb *pmc;
|
||||||
|
u8 num_ports;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
pmc = devm_kzalloc(&pdev->dev, sizeof(*pmc), GFP_KERNEL);
|
|
||||||
if (!pmc)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
device_for_each_child_node(&pdev->dev, fwnode)
|
device_for_each_child_node(&pdev->dev, fwnode)
|
||||||
pmc->num_ports++;
|
num_ports++;
|
||||||
|
|
||||||
/* The IOM microcontroller has a limitation of max 4 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");
|
dev_err(&pdev->dev, "driver limited to 4 ports\n");
|
||||||
return -ERANGE;
|
return -ERANGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
pmc->port = devm_kcalloc(&pdev->dev, pmc->num_ports,
|
pmc = devm_kzalloc(&pdev->dev, struct_size(pmc, port, num_ports), GFP_KERNEL);
|
||||||
sizeof(struct pmc_usb_port), GFP_KERNEL);
|
if (!pmc)
|
||||||
if (!pmc->port)
|
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
pmc->num_ports = num_ports;
|
||||||
|
|
||||||
pmc->ipc = devm_intel_scu_ipc_dev_get(&pdev->dev);
|
pmc->ipc = devm_intel_scu_ipc_dev_get(&pdev->dev);
|
||||||
if (!pmc->ipc)
|
if (!pmc->ipc)
|
||||||
return -EPROBE_DEFER;
|
return -EPROBE_DEFER;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user