extcon: max77693: Fix incorrect error check and return value
authorSachin Kamat <sachin.kamat@linaro.org>
Tue, 20 Nov 2012 06:46:44 +0000 (15:46 +0900)
committerMyungJoo Ham <myungjoo.ham@samsung.com>
Wed, 21 Nov 2012 11:00:40 +0000 (20:00 +0900)
irq_create_mapping() returns 0 if it fails to provide a valid irq number.
'ret' needs to be updated with a negative error code before returning from
probe to signal probe failure. While at it, also corrected the 'virq' type to
unsigned from signed.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com>
drivers/extcon/extcon-max77693.c

index a17d0d9..2a0f397 100644 (file)
@@ -686,11 +686,13 @@ static int __devinit max77693_muic_probe(struct platform_device *pdev)
        /* Support irq domain for MAX77693 MUIC device */
        for (i = 0; i < ARRAY_SIZE(muic_irqs); i++) {
                struct max77693_muic_irq *muic_irq = &muic_irqs[i];
-               int virq = 0;
+               unsigned int virq = 0;
 
                virq = irq_create_mapping(max77693->irq_domain, muic_irq->irq);
-               if (!virq)
+               if (!virq) {
+                       ret = -EINVAL;
                        goto err_irq;
+               }
                muic_irq->virq = virq;
 
                ret = request_threaded_irq(virq, NULL,
@@ -702,8 +704,6 @@ static int __devinit max77693_muic_probe(struct platform_device *pdev)
                                " error :%d)\n",
                                muic_irq->irq, ret);
 
-                       for (i = i - 1; i >= 0; i--)
-                               free_irq(muic_irq->virq, info);
                        goto err_irq;
                }
        }
@@ -768,6 +768,8 @@ static int __devinit max77693_muic_probe(struct platform_device *pdev)
 err_extcon:
        kfree(info->edev);
 err_irq:
+       while (--i >= 0)
+               free_irq(muic_irqs[i].virq, info);
 err_regmap:
        kfree(info);
 err_kfree: