OSDN Git Service

gpio-adnp: Use common error handling code in adnp_gpio_dbg_show()
authorMarkus Elfring <elfring@users.sourceforge.net>
Sun, 22 Oct 2017 18:21:55 +0000 (20:21 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 31 Oct 2017 09:09:04 +0000 (10:09 +0100)
Add a jump target so that a bit of exception handling can be better reused
at the end of this function.

This issue was detected by using the Coccinelle software.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-adnp.c

index 89863ea..7f475ee 100644 (file)
@@ -192,28 +192,20 @@ static void adnp_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
                mutex_lock(&adnp->i2c_lock);
 
                err = adnp_read(adnp, GPIO_DDR(adnp) + i, &ddr);
-               if (err < 0) {
-                       mutex_unlock(&adnp->i2c_lock);
-                       return;
-               }
+               if (err < 0)
+                       goto unlock;
 
                err = adnp_read(adnp, GPIO_PLR(adnp) + i, &plr);
-               if (err < 0) {
-                       mutex_unlock(&adnp->i2c_lock);
-                       return;
-               }
+               if (err < 0)
+                       goto unlock;
 
                err = adnp_read(adnp, GPIO_IER(adnp) + i, &ier);
-               if (err < 0) {
-                       mutex_unlock(&adnp->i2c_lock);
-                       return;
-               }
+               if (err < 0)
+                       goto unlock;
 
                err = adnp_read(adnp, GPIO_ISR(adnp) + i, &isr);
-               if (err < 0) {
-                       mutex_unlock(&adnp->i2c_lock);
-                       return;
-               }
+               if (err < 0)
+                       goto unlock;
 
                mutex_unlock(&adnp->i2c_lock);
 
@@ -240,6 +232,11 @@ static void adnp_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
                                   direction, level, interrupt, pending);
                }
        }
+
+       return;
+
+unlock:
+       mutex_unlock(&adnp->i2c_lock);
 }
 
 static int adnp_gpio_setup(struct adnp *adnp, unsigned int num_gpios)