[PATCH] PCI: dwc: rcar-gen4: Fix potential unclocked access in rcar_gen4_pcie_ep_deinit()
Marek Vasut <[email protected]>
| Newsgroups | org.kernel.vger.linux-renesas-soc,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci |
|---|---|
| Message-ID | <[email protected]> |
Initialize PCIEDMAINTSTSEN in rcar_gen4_pcie_ep_pre_init() to 0, and in case rcar_gen4_pcie_common_init() fails and the result propagates to dw_pcie_ep_init(), the invoke common deinit instead of endpoint deinit, because we are certain the PCIEDMAINTSTSEN register is already 0 and the common deinit does not do any register accesses. Signed-off-by: Marek Vasut <[email protected]> --- Cc: "Krzysztof Wilczyński" <[email protected]> Cc: Bjorn Helgaas <[email protected]> Cc: Geert Uytterhoeven <[email protected]> Cc: Koichiro Den <[email protected]> Cc: Lorenzo Pieralisi <[email protected]> Cc: Magnus Damm <[email protected]> Cc: Manivannan Sadhasivam <[email protected]> Cc: Rob Herring <[email protected]> Cc: Yoshihiro Shimoda <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] --- drivers/pci/controller/dwc/pcie-rcar-gen4.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pcie-rcar-gen4.c b/drivers/pci/controller/dwc/pcie-rcar-gen4.c index fbe465a29068f..b47281b30db96 100644 --- a/drivers/pci/controller/dwc/pcie-rcar-gen4.c +++ b/drivers/pci/controller/dwc/pcie-rcar-gen4.c @@ -487,6 +487,8 @@ static int rcar_gen4_pcie_ep_pre_init(struct dw_pcie_ep *ep) struct rcar_gen4_pcie *rcar = to_rcar_gen4_pcie(dw); int ret; + writel(0, rcar->base + PCIEDMAINTSTSEN); + ret = rcar_gen4_pcie_common_init(rcar); if (ret) return ret; @@ -571,7 +573,7 @@ static int rcar_gen4_add_dw_pcie_ep(struct rcar_gen4_pcie *rcar) ret = dw_pcie_ep_init(ep); if (ret) { - rcar_gen4_pcie_ep_deinit(rcar); + rcar_gen4_pcie_common_deinit(rcar); return ret; } -- 2.53.0