mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 23:22:31 +02:00
gpiolib: clear requested flag if line is invalid
If `gpiochip_line_is_valid()` fails, then `-EINVAL` is returned, but
`desc->flags` will have `GPIOD_FLAG_REQUESTED` set, which will result
in subsequent calls misleadingly returning `-EBUSY`.
Fix that by clearing the flag in case of failure.
Fixes: a501624864 ("gpio: Respect valid_mask when requesting GPIOs")
Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>
Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
Link: https://patch.msgid.link/20260310204359.1202451-1-pobrn@protonmail.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
This commit is contained in:
parent
189645ba9c
commit
6df6ea4b3d
|
|
@ -2465,8 +2465,10 @@ int gpiod_request_commit(struct gpio_desc *desc, const char *label)
|
|||
return -EBUSY;
|
||||
|
||||
offset = gpiod_hwgpio(desc);
|
||||
if (!gpiochip_line_is_valid(guard.gc, offset))
|
||||
return -EINVAL;
|
||||
if (!gpiochip_line_is_valid(guard.gc, offset)) {
|
||||
ret = -EINVAL;
|
||||
goto out_clear_bit;
|
||||
}
|
||||
|
||||
/* NOTE: gpio_request() can be called in early boot,
|
||||
* before IRQs are enabled, for non-sleeping (SOC) GPIOs.
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user