diff options
author | Geert Uytterhoeven <geert+renesas@glider.be> | 2016-05-04 10:21:53 +0200 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2016-05-11 13:28:48 +0200 |
commit | 9697643ff3edca036e8843235cd6e4d598a50e63 (patch) | |
tree | eb5831bec139e2bfc81b06ead518fca0d914be2a /drivers/pinctrl/sh-pfc/gpio.c | |
parent | 1b0d5287dafc7651af1d55cf47209209f79a964b (diff) | |
download | linux-9697643ff3edca036e8843235cd6e4d598a50e63.tar.bz2 |
pinctrl: sh-pfc: Let gpio_chip.to_irq() return zero on error
Currrently the gpio_chip.to_irq() callback returns -ENOSYS on error,
which causes bad interactions with the serial_mctrl_gpio helpers.
mctrl_gpio_init() returns -ENOSYS if GPIOLIB is not enabled, which is
intended to be ignored by its callers. However, ignoring -ENOSYS when it
was caused by a gpiod_to_irq() failure will lead to a crash later:
Unable to handle kernel paging request at virtual address ffffffde
...
PC is at mctrl_gpio_set+0x14/0x78
Fix this by returning zero instead, like gpiochip_to_irq() does.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/sh-pfc/gpio.c')
-rw-r--r-- | drivers/pinctrl/sh-pfc/gpio.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/pinctrl/sh-pfc/gpio.c b/drivers/pinctrl/sh-pfc/gpio.c index a6681b8b17c3..97dff6a09ff0 100644 --- a/drivers/pinctrl/sh-pfc/gpio.c +++ b/drivers/pinctrl/sh-pfc/gpio.c @@ -212,7 +212,7 @@ static int gpio_pin_to_irq(struct gpio_chip *gc, unsigned offset) } } - return -ENOSYS; + return 0; found: return pfc->irqs[i]; |