diff options
Diffstat (limited to 'drivers/irqchip/irqchip.c')
| -rw-r--r-- | drivers/irqchip/irqchip.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/irqchip/irqchip.c b/drivers/irqchip/irqchip.c index 3570f0a588c4..7899607fbee8 100644 --- a/drivers/irqchip/irqchip.c +++ b/drivers/irqchip/irqchip.c @@ -38,8 +38,10 @@ int platform_irqchip_probe(struct platform_device *pdev)  	struct device_node *par_np = of_irq_find_parent(np);  	of_irq_init_cb_t irq_init_cb = of_device_get_match_data(&pdev->dev); -	if (!irq_init_cb) +	if (!irq_init_cb) { +		of_node_put(par_np);  		return -EINVAL; +	}  	if (par_np == np)  		par_np = NULL; @@ -52,8 +54,10 @@ int platform_irqchip_probe(struct platform_device *pdev)  	 * interrupt controller. The actual initialization callback of this  	 * interrupt controller can check for specific domains as necessary.  	 */ -	if (par_np && !irq_find_matching_host(par_np, DOMAIN_BUS_ANY)) +	if (par_np && !irq_find_matching_host(par_np, DOMAIN_BUS_ANY)) { +		of_node_put(par_np);  		return -EPROBE_DEFER; +	}  	return irq_init_cb(np, par_np);  }  |