Boerge Struempfel 95dd1e34ff gpiolib: sysfs: Fix error handling on failed export
If gpio_set_transitory() fails, we should free the GPIO again. Most
notably, the flag FLAG_REQUESTED has previously been set in
gpiod_request_commit(), and should be reset on failure.

To my knowledge, this does not affect any current users, since the
gpio_set_transitory() mainly returns 0 and -ENOTSUPP, which is converted
to 0. However the gpio_set_transitory() function calles the .set_config()
function of the corresponding GPIO chip and there are some GPIO drivers in
which some (unlikely) branches return other values like -EPROBE_DEFER,
and -EINVAL. In these cases, the above mentioned FLAG_REQUESTED would not
be reset, which results in the pin being blocked until the next reboot.

Fixes: e10f72bf4b3e ("gpio: gpiolib: Generalise state persistence beyond sleep")
Signed-off-by: Boerge Struempfel <boerge.struempfel@gmail.com>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2023-12-01 10:44:48 +01:00
..
2021-04-14 10:19:22 +01:00
2023-10-13 08:39:30 +02:00
2021-05-05 16:07:41 +02:00
2022-10-26 14:52:01 +02:00
2023-10-09 09:08:08 +02:00
2022-10-08 09:46:29 -07:00
2023-11-09 13:47:52 -08:00
2023-10-04 11:37:25 +02:00
2023-08-21 10:39:58 +02:00
2022-06-21 18:01:11 +03:00
2023-03-06 12:33:02 +02:00
2023-10-31 17:21:54 -10:00
2023-10-31 17:21:54 -10:00
2022-01-14 18:50:52 -05:00
2023-08-29 10:21:56 -07:00
2023-10-31 17:21:54 -10:00
2023-03-06 12:33:02 +02:00
2023-11-02 14:34:14 -10:00
2023-03-06 12:33:02 +02:00
2022-10-24 12:30:26 +03:00
2023-11-03 16:00:42 -10:00