Commit ad2fab36 authored by Mathias Nyman's avatar Mathias Nyman Committed by Linus Walleij

gpiolib: Don't return -EPROBE_DEFER to sysfs, or for invalid gpios

gpios requested with invalid numbers, or gpios requested from userspace via sysfs
should not try to be deferred on failure.

Cc: stable@kernel.org
Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent c57d75c0
...@@ -623,9 +623,11 @@ static ssize_t export_store(struct class *class, ...@@ -623,9 +623,11 @@ static ssize_t export_store(struct class *class,
*/ */
status = gpio_request(gpio, "sysfs"); status = gpio_request(gpio, "sysfs");
if (status < 0) if (status < 0) {
if (status == -EPROBE_DEFER)
status = -ENODEV;
goto done; goto done;
}
status = gpio_export(gpio, true); status = gpio_export(gpio, true);
if (status < 0) if (status < 0)
gpio_free(gpio); gpio_free(gpio);
...@@ -1191,8 +1193,10 @@ int gpio_request(unsigned gpio, const char *label) ...@@ -1191,8 +1193,10 @@ int gpio_request(unsigned gpio, const char *label)
spin_lock_irqsave(&gpio_lock, flags); spin_lock_irqsave(&gpio_lock, flags);
if (!gpio_is_valid(gpio)) if (!gpio_is_valid(gpio)) {
status = -EINVAL;
goto done; goto done;
}
desc = &gpio_desc[gpio]; desc = &gpio_desc[gpio];
chip = desc->chip; chip = desc->chip;
if (chip == NULL) if (chip == NULL)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment