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: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
Mathias Nyman 2012-10-25 14:03:03 +03:00 committed by Linus Walleij
parent c57d75c099
commit ad2fab36d7

View File

@ -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)
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)