A match in the rcar_pcie_of_match[] table is required, so check that first,
before we start setting up things that need to be undone if it fails.  No
functional change intended.

Signed-off-by: Bjorn Helgaas <[email protected]>
---
 drivers/pci/host/pcie-rcar.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c
index 0d9b96c3c49d..c91ff0b91be8 100644
--- a/drivers/pci/host/pcie-rcar.c
+++ b/drivers/pci/host/pcie-rcar.c
@@ -1129,6 +1129,10 @@ static int rcar_pcie_probe(struct platform_device *pdev)
        int err;
        int (*hw_init_fn)(struct rcar_pcie *);
 
+       of_id = of_match_device(rcar_pcie_of_match, dev);
+       if (!of_id || !of_id->data)
+               return -EINVAL;
+
        pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
        if (!pcie)
                return -ENOMEM;
@@ -1149,11 +1153,6 @@ static int rcar_pcie_probe(struct platform_device *pdev)
        if (err)
                return err;
 
-       of_id = of_match_device(rcar_pcie_of_match, dev);
-       if (!of_id || !of_id->data)
-               return -EINVAL;
-       hw_init_fn = of_id->data;
-
        pm_runtime_enable(dev);
        err = pm_runtime_get_sync(dev);
        if (err < 0) {
@@ -1162,6 +1161,7 @@ static int rcar_pcie_probe(struct platform_device *pdev)
        }
 
        /* Failure to get a link might just be that no cards are inserted */
+       hw_init_fn = of_id->data;
        err = hw_init_fn(pcie);
        if (err) {
                dev_info(dev, "PCIe link down\n");

Reply via email to