lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0783/1039] PCI: qcom: Fix an error handling path in qcom_pcie_probe()
    Date
    From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>

    [ Upstream commit 4e0e90539bb0e6c0ca3768c642df9eed2118a8bb ]

    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.

    Link: https://lore.kernel.org/r/4d03c636193f64907c8dacb17fa71ed05fd5f60c.1636220582.git.christophe.jaillet@wanadoo.fr
    Fixes: b89ff410253d ("PCI: qcom: Replace ops with struct pcie_cfg in pcie match data")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/pci/controller/dwc/pcie-qcom.c | 12 ++++++------
    1 file changed, 6 insertions(+), 6 deletions(-)

    diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
    index 1c3d1116bb60c..baae67f71ba82 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;

    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-25 00:11    [W:2.134 / U:0.840 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site