diff options
author | Markus Elfring <elfring@users.sourceforge.net> | 2017-10-22 20:21:55 +0200 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2017-10-31 10:09:04 +0100 |
commit | 5ac9d2df5bdd7c4e58700ad42aa7c9356bbf154d (patch) | |
tree | 07d56fb208dc3fba6b1391c643f12501ee5291ed /drivers/gpio | |
parent | 5a24d4b601561da08a70c065d4630bd9fadb37e8 (diff) | |
download | linux-stable-5ac9d2df5bdd7c4e58700ad42aa7c9356bbf154d.tar.gz linux-stable-5ac9d2df5bdd7c4e58700ad42aa7c9356bbf154d.tar.bz2 linux-stable-5ac9d2df5bdd7c4e58700ad42aa7c9356bbf154d.zip |
gpio-adnp: Use common error handling code in adnp_gpio_dbg_show()
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>
Diffstat (limited to 'drivers/gpio')
-rw-r--r-- | drivers/gpio/gpio-adnp.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/drivers/gpio/gpio-adnp.c b/drivers/gpio/gpio-adnp.c index 89863ea25de1..7f475eef3faa 100644 --- a/drivers/gpio/gpio-adnp.c +++ b/drivers/gpio/gpio-adnp.c @@ -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) |