diff options
author | Tony Lindgren <tony@atomide.com> | 2015-09-03 17:34:30 (GMT) |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2015-09-14 07:13:43 (GMT) |
commit | 942cde724075f840ded89390b10dce1a47a4d712 (patch) | |
tree | 838d42b5eb8cb93c3284649b8afe461a57cb1394 /drivers/pinctrl | |
parent | 163dc9f39a26b41fc49319fce4145b35f9705789 (diff) | |
download | linux-942cde724075f840ded89390b10dce1a47a4d712.tar.xz |
pinctrl: core: Warn about NULL gpio_chip in pinctrl_ready_for_gpio_range()
If the gpio driver is confused about the numbers for gpio-ranges,
pinctrl_ready_for_gpio_range() may get called with invalid GPIO
causing a NULL pointer exception. Let's instead provide a warning
that allows fixing the problem and return with error.
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r-- | drivers/pinctrl/core.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c index 69723e0..9638a00 100644 --- a/drivers/pinctrl/core.c +++ b/drivers/pinctrl/core.c @@ -349,6 +349,9 @@ static bool pinctrl_ready_for_gpio_range(unsigned gpio) struct pinctrl_gpio_range *range = NULL; struct gpio_chip *chip = gpio_to_chip(gpio); + if (WARN(!chip, "no gpio_chip for gpio%i?", gpio)) + return false; + mutex_lock(&pinctrldev_list_mutex); /* Loop over the pin controllers */ |