On Thu, Mar 7, 2024 at 10:43 PM Alexander Sverdlin <alexander.sverdlin@xxxxxxxxx> wrote: > > It would make sense to return -EPERM if the bit was already set (already > used), not if it was cleared. Before this fix pins can only be exported on > the 2nd attempt: > > $ echo 522 > /sys/class/gpio/export > sh: write error: Operation not permitted > $ echo 522 > /sys/class/gpio/export > > Fixes: 35b545332b80 ("gpio: remove gpio_lock") > Signed-off-by: Alexander Sverdlin <alexander.sverdlin@xxxxxxxxx> > --- > drivers/gpio/gpiolib-sysfs.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpio/gpiolib-sysfs.c b/drivers/gpio/gpiolib-sysfs.c > index 67fc09a57f26..6853ecd98bcb 100644 > --- a/drivers/gpio/gpiolib-sysfs.c > +++ b/drivers/gpio/gpiolib-sysfs.c > @@ -593,7 +593,7 @@ int gpiod_export(struct gpio_desc *desc, bool direction_may_change) > if (!guard.gc) > return -ENODEV; > > - if (!test_and_set_bit(FLAG_EXPORT, &desc->flags)) > + if (test_and_set_bit(FLAG_EXPORT, &desc->flags)) > return -EPERM; > > gdev = desc->gdev; > -- > 2.43.2 > That's of course correct. Applied. Bart