| From f82bd1df29e0c540e926d78e19d7c5fc76415ea0 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 22 Jul 2020 16:33:04 +0530 |
| Subject: PCI: cadence: Fix cdns_pcie_{host|ep}_setup() error path |
| |
| From: Kishon Vijay Abraham I <kishon@ti.com> |
| |
| [ Upstream commit 19abcd790b51b26d775e1170ba2ac086823cceeb ] |
| |
| commit bd22885aa188 ("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: bd22885aa188 ("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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/pci/controller/cadence/pcie-cadence-ep.c | 9 ++------- |
| drivers/pci/controller/cadence/pcie-cadence-host.c | 6 +----- |
| 2 files changed, 3 insertions(+), 12 deletions(-) |
| |
| diff --git a/drivers/pci/controller/cadence/pcie-cadence-ep.c b/drivers/pci/controller/cadence/pcie-cadence-ep.c |
| index 1c173dad67d1d..1fdae37843eff 100644 |
| --- a/drivers/pci/controller/cadence/pcie-cadence-ep.c |
| +++ b/drivers/pci/controller/cadence/pcie-cadence-ep.c |
| @@ -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)); |
| 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; |
| } |
| diff --git a/drivers/pci/controller/cadence/pcie-cadence-host.c b/drivers/pci/controller/cadence/pcie-cadence-host.c |
| index 9b1c3966414b1..11eb81da0233f 100644 |
| --- a/drivers/pci/controller/cadence/pcie-cadence-host.c |
| +++ b/drivers/pci/controller/cadence/pcie-cadence-host.c |
| @@ -7,7 +7,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" |
| |
| @@ -256,7 +255,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; |
| @@ -274,8 +273,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; |
| } |
| -- |
| 2.25.1 |
| |