Fix below issues:
1. If request_threaded_irq() fails, current code does not free all requested
   irqs.
2. Add missing extcon_dev_unregister() in error path if failed to read revision
   number.

Signed-off-by: Axel Lin <axel....@ingics.com>
---
 drivers/extcon/extcon-max77693.c |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/extcon/extcon-max77693.c b/drivers/extcon/extcon-max77693.c
index e0ed622..9928c63 100644
--- a/drivers/extcon/extcon-max77693.c
+++ b/drivers/extcon/extcon-max77693.c
@@ -696,12 +696,8 @@ static int __devinit max77693_muic_probe(struct 
platform_device *pdev)
                                IRQF_ONESHOT, muic_irq->name, info);
                if (ret) {
                        dev_err(&pdev->dev,
-                               "failed: irq request (IRQ: %d,"
-                               " error :%d)\n",
+                               "failed: irq request (IRQ: %d, error :%d)\n",
                                muic_irq->irq, ret);
-
-                       for (i = i - 1; i >= 0; i--)
-                               free_irq(muic_irq->virq, info);
                        goto err_irq;
                }
        }
@@ -726,7 +722,7 @@ static int __devinit max77693_muic_probe(struct 
platform_device *pdev)
                        MAX77693_MUIC_REG_ID, &id);
        if (ret < 0) {
                dev_err(&pdev->dev, "failed to read revision number\n");
-               goto err_extcon;
+               goto err_read_reg;
        }
        dev_info(info->dev, "device ID : 0x%x\n", id);
 
@@ -738,9 +734,13 @@ static int __devinit max77693_muic_probe(struct 
platform_device *pdev)
 
        return ret;
 
+err_read_reg:
+       extcon_dev_unregister(info->edev);
 err_extcon:
        kfree(info->edev);
 err_irq:
+       while (--i >= 0)
+               free_irq(muic_irqs[i].virq, info);
 err_regmap:
        kfree(info);
 err_kfree:
-- 
1.7.9.5



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to