diff options
Diffstat (limited to 'drivers/pci/controller/pci-aardvark.c')
| -rw-r--r-- | drivers/pci/controller/pci-aardvark.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c index eb58dfdaba1b..134e0306ff00 100644 --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c @@ -794,6 +794,7 @@ static int advk_pcie_init_irq_domain(struct advk_pcie *pcie)  	struct device_node *node = dev->of_node;  	struct device_node *pcie_intc_node;  	struct irq_chip *irq_chip; +	int ret = 0;  	pcie_intc_node =  of_get_next_child(node, NULL);  	if (!pcie_intc_node) { @@ -806,8 +807,8 @@ static int advk_pcie_init_irq_domain(struct advk_pcie *pcie)  	irq_chip->name = devm_kasprintf(dev, GFP_KERNEL, "%s-irq",  					dev_name(dev));  	if (!irq_chip->name) { -		of_node_put(pcie_intc_node); -		return -ENOMEM; +		ret = -ENOMEM; +		goto out_put_node;  	}  	irq_chip->irq_mask = advk_pcie_irq_mask; @@ -819,11 +820,13 @@ static int advk_pcie_init_irq_domain(struct advk_pcie *pcie)  				      &advk_pcie_irq_domain_ops, pcie);  	if (!pcie->irq_domain) {  		dev_err(dev, "Failed to get a INTx IRQ domain\n"); -		of_node_put(pcie_intc_node); -		return -ENOMEM; +		ret = -ENOMEM; +		goto out_put_node;  	} -	return 0; +out_put_node: +	of_node_put(pcie_intc_node); +	return ret;  }  static void advk_pcie_remove_irq_domain(struct advk_pcie *pcie)  |