mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	PCI: cadence: Fix cdns_pcie_{host|ep}_setup() error path
commitbd22885aa1("PCI: cadence: Refactor driver to use as a core library") while refactoring the Cadence PCIe driver to be used as library, removed pm_runtime_get_sync() from cdns_pcie_ep_setup() and cdns_pcie_host_setup() but missed to remove the corresponding pm_runtime_put_sync() in the error path. Fix it here. Link: https://lore.kernel.org/r/20200722110317.4744-3-kishon@ti.com Fixes:bd22885aa1("PCI: cadence: Refactor driver to use as a core library") Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Reviewed-by: Rob Herring <robh@kernel.org>
This commit is contained in:
		
							parent
							
								
									5d3d063abb
								
							
						
					
					
						commit
						19abcd790b
					
				
					 2 changed files with 3 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -8,7 +8,6 @@
 | 
			
		|||
#include <linux/of.h>
 | 
			
		||||
#include <linux/pci-epc.h>
 | 
			
		||||
#include <linux/platform_device.h>
 | 
			
		||||
#include <linux/pm_runtime.h>
 | 
			
		||||
#include <linux/sizes.h>
 | 
			
		||||
 | 
			
		||||
#include "pcie-cadence.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -440,8 +439,7 @@ int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep)
 | 
			
		|||
	epc = devm_pci_epc_create(dev, &cdns_pcie_epc_ops);
 | 
			
		||||
	if (IS_ERR(epc)) {
 | 
			
		||||
		dev_err(dev, "failed to create epc device\n");
 | 
			
		||||
		ret = PTR_ERR(epc);
 | 
			
		||||
		goto err_init;
 | 
			
		||||
		return PTR_ERR(epc);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	epc_set_drvdata(epc, ep);
 | 
			
		||||
| 
						 | 
				
			
			@ -453,7 +451,7 @@ int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep)
 | 
			
		|||
			       resource_size(pcie->mem_res), PAGE_SIZE);
 | 
			
		||||
	if (ret < 0) {
 | 
			
		||||
		dev_err(dev, "failed to initialize the memory space\n");
 | 
			
		||||
		goto err_init;
 | 
			
		||||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ep->irq_cpu_addr = pci_epc_mem_alloc_addr(epc, &ep->irq_phys_addr,
 | 
			
		||||
| 
						 | 
				
			
			@ -472,8 +470,5 @@ int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep)
 | 
			
		|||
 free_epc_mem:
 | 
			
		||||
	pci_epc_mem_exit(epc);
 | 
			
		||||
 | 
			
		||||
 err_init:
 | 
			
		||||
	pm_runtime_put_sync(dev);
 | 
			
		||||
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,6 @@
 | 
			
		|||
#include <linux/of_address.h>
 | 
			
		||||
#include <linux/of_pci.h>
 | 
			
		||||
#include <linux/platform_device.h>
 | 
			
		||||
#include <linux/pm_runtime.h>
 | 
			
		||||
 | 
			
		||||
#include "pcie-cadence.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -474,7 +473,7 @@ int cdns_pcie_host_setup(struct cdns_pcie_rc *rc)
 | 
			
		|||
 | 
			
		||||
	ret = cdns_pcie_host_init(dev, &resources, rc);
 | 
			
		||||
	if (ret)
 | 
			
		||||
		goto err_init;
 | 
			
		||||
		return ret;
 | 
			
		||||
 | 
			
		||||
	list_splice_init(&resources, &bridge->windows);
 | 
			
		||||
	bridge->dev.parent = dev;
 | 
			
		||||
| 
						 | 
				
			
			@ -492,8 +491,5 @@ int cdns_pcie_host_setup(struct cdns_pcie_rc *rc)
 | 
			
		|||
 err_host_probe:
 | 
			
		||||
	pci_free_resource_list(&resources);
 | 
			
		||||
 | 
			
		||||
 err_init:
 | 
			
		||||
	pm_runtime_put_sync(dev);
 | 
			
		||||
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue