drivers: uio_dmem_genirq: Fix memory leak in uio_dmem_genirq_probe()
[firefly-linux-kernel-4.4.55.git] / drivers / uio / uio_dmem_genirq.c
index 1270f3b2613949626463492e8046f0d1db1b9f20..8d0bba469566e403f7775ba5e1d090cbff1e8ec3 100644 (file)
@@ -204,7 +204,7 @@ static int uio_dmem_genirq_probe(struct platform_device *pdev)
                ret = platform_get_irq(pdev, 0);
                if (ret < 0) {
                        dev_err(&pdev->dev, "failed to get IRQ\n");
-                       goto bad0;
+                       goto bad1;
                }
                uioinfo->irq = ret;
        }
@@ -275,6 +275,7 @@ static int uio_dmem_genirq_probe(struct platform_device *pdev)
        ret = uio_register_device(&pdev->dev, priv->uioinfo);
        if (ret) {
                dev_err(&pdev->dev, "unable to register uio device\n");
+               pm_runtime_disable(&pdev->dev);
                goto bad1;
        }
 
@@ -282,7 +283,6 @@ static int uio_dmem_genirq_probe(struct platform_device *pdev)
        return 0;
  bad1:
        kfree(priv);
-       pm_runtime_disable(&pdev->dev);
  bad0:
        /* kfree uioinfo for OF */
        if (pdev->dev.of_node)