Message ID | 4d03c636193f64907c8dacb17fa71ed05fd5f60c.1636220582.git.christophe.jaillet@wanadoo.fr (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | PCI: qcom: Fix an error handling path in 'qcom_pcie_probe()' | expand |
Quoting Christophe JAILLET (2021-11-06 10:44:52) > If 'of_device_get_match_data()' fails, previous 'pm_runtime_get_sync()/ > pm_runtime_enable()' should be undone. > > To fix it, the easiest is to move this block of code before the memory > allocations and the pm_runtime_xxx calls. > > Fixes: b89ff410253d ("PCI: qcom: Replace ops with struct pcie_cfg in pcie match data") > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> > --- Reviewed-by: Stephen Boyd <swboyd@chromium.org>
On Sat, 6 Nov 2021 18:44:52 +0100, Christophe JAILLET wrote: > If 'of_device_get_match_data()' fails, previous 'pm_runtime_get_sync()/ > pm_runtime_enable()' should be undone. > > To fix it, the easiest is to move this block of code before the memory > allocations and the pm_runtime_xxx calls. > > > [...] Applied to pci/qcom, thanks! [1/1] PCI: qcom: Fix an error handling path in 'qcom_pcie_probe()' https://git.kernel.org/lpieralisi/pci/c/4e0e90539b Thanks, Lorenzo
diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c index 1c3d1116bb60..baae67f71ba8 100644 --- a/drivers/pci/controller/dwc/pcie-qcom.c +++ b/drivers/pci/controller/dwc/pcie-qcom.c @@ -1534,6 +1534,12 @@ static int qcom_pcie_probe(struct platform_device *pdev) const struct qcom_pcie_cfg *pcie_cfg; int ret; + pcie_cfg = of_device_get_match_data(dev); + if (!pcie_cfg || !pcie_cfg->ops) { + dev_err(dev, "Invalid platform data\n"); + return -EINVAL; + } + pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); if (!pcie) return -ENOMEM; @@ -1553,12 +1559,6 @@ static int qcom_pcie_probe(struct platform_device *pdev) pcie->pci = pci; - pcie_cfg = of_device_get_match_data(dev); - if (!pcie_cfg || !pcie_cfg->ops) { - dev_err(dev, "Invalid platform data\n"); - return -EINVAL; - } - pcie->ops = pcie_cfg->ops; pcie->pipe_clk_need_muxing = pcie_cfg->pipe_clk_need_muxing;
If 'of_device_get_match_data()' fails, previous 'pm_runtime_get_sync()/ pm_runtime_enable()' should be undone. To fix it, the easiest is to move this block of code before the memory allocations and the pm_runtime_xxx calls. Fixes: b89ff410253d ("PCI: qcom: Replace ops with struct pcie_cfg in pcie match data") Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> --- drivers/pci/controller/dwc/pcie-qcom.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)