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:
Родитель
c57d75c099
Коммит
ad2fab36d7
|
@ -623,9 +623,11 @@ static ssize_t export_store(struct class *class,
|
|||
*/
|
||||
|
||||
status = gpio_request(gpio, "sysfs");
|
||||
if (status < 0)
|
||||
if (status < 0) {
|
||||
if (status == -EPROBE_DEFER)
|
||||
status = -ENODEV;
|
||||
goto done;
|
||||
|
||||
}
|
||||
status = gpio_export(gpio, true);
|
||||
if (status < 0)
|
||||
gpio_free(gpio);
|
||||
|
@ -1191,8 +1193,10 @@ int gpio_request(unsigned gpio, const char *label)
|
|||
|
||||
spin_lock_irqsave(&gpio_lock, flags);
|
||||
|
||||
if (!gpio_is_valid(gpio))
|
||||
if (!gpio_is_valid(gpio)) {
|
||||
status = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
desc = &gpio_desc[gpio];
|
||||
chip = desc->chip;
|
||||
if (chip == NULL)
|
||||
|
|
Загрузка…
Ссылка в новой задаче