Currently davinci_gpio_irq_setup return value is ignored. Handle the
return value appropriately.

Signed-off-by: Keerthy <j-keer...@ti.com>
---
 drivers/gpio/gpio-davinci.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c
index 2c88054..932f270 100644
--- a/drivers/gpio/gpio-davinci.c
+++ b/drivers/gpio/gpio-davinci.c
@@ -233,15 +233,23 @@ static int davinci_gpio_probe(struct platform_device 
*pdev)
                chips->regs[bank] = gpio_base + offset_array[bank];
 
        ret = devm_gpiochip_add_data(dev, &chips->chip, chips);
+       if (ret)
+               goto err;
+
+       platform_set_drvdata(pdev, chips);
+       ret = davinci_gpio_irq_setup(pdev);
        if (ret) {
-               ctrl_num = 0;
-               bank_base = 0;
-               return ret;
+               platform_set_drvdata(pdev, NULL);
+               goto err;
        }
 
-       platform_set_drvdata(pdev, chips);
-       davinci_gpio_irq_setup(pdev);
        return 0;
+
+err:
+       ctrl_num = 0;
+       bank_base = 0;
+
+       return ret;
 }
 
 /*--------------------------------------------------------------------------*/
-- 
1.9.1

Reply via email to