mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-24 11:25:43 +00:00
irqchip/mbigen: Unify the error handling in mbigen_of_create_domain()
Dan Carpenter reported that commit fea087fc29
"irqchip/mbigen: move
to use bus_get_dev_root()" leads to the following Smatch static checker
warning:
drivers/irqchip/irq-mbigen.c:258 mbigen_of_create_domain()
error: potentially dereferencing uninitialized 'child'.
It should not cause a problem on real hardware, but better to fix the
warning, let's move the bus_get_dev_root() out of the loop, and unify
the error handling to silence it.
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20230505090654.12793-1-wangkefeng.wang@huawei.com
This commit is contained in:
parent
14130211be
commit
cddb536a73
1 changed files with 18 additions and 13 deletions
|
@ -240,26 +240,27 @@ static int mbigen_of_create_domain(struct platform_device *pdev,
|
|||
struct irq_domain *domain;
|
||||
struct device_node *np;
|
||||
u32 num_pins;
|
||||
int ret = 0;
|
||||
|
||||
parent = bus_get_dev_root(&platform_bus_type);
|
||||
if (!parent)
|
||||
return -ENODEV;
|
||||
|
||||
for_each_child_of_node(pdev->dev.of_node, np) {
|
||||
if (!of_property_read_bool(np, "interrupt-controller"))
|
||||
continue;
|
||||
|
||||
parent = bus_get_dev_root(&platform_bus_type);
|
||||
if (parent) {
|
||||
child = of_platform_device_create(np, NULL, parent);
|
||||
put_device(parent);
|
||||
if (!child) {
|
||||
of_node_put(np);
|
||||
return -ENOMEM;
|
||||
}
|
||||
child = of_platform_device_create(np, NULL, parent);
|
||||
if (!child) {
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
|
||||
if (of_property_read_u32(child->dev.of_node, "num-pins",
|
||||
&num_pins) < 0) {
|
||||
dev_err(&pdev->dev, "No num-pins property\n");
|
||||
of_node_put(np);
|
||||
return -EINVAL;
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
domain = platform_msi_create_device_domain(&child->dev, num_pins,
|
||||
|
@ -267,12 +268,16 @@ static int mbigen_of_create_domain(struct platform_device *pdev,
|
|||
&mbigen_domain_ops,
|
||||
mgn_chip);
|
||||
if (!domain) {
|
||||
of_node_put(np);
|
||||
return -ENOMEM;
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
put_device(parent);
|
||||
if (ret)
|
||||
of_node_put(np);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ACPI
|
||||
|
|
Loading…
Reference in a new issue