On Fri, 11 Aug 2023 13:16:46 +0300 Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > On Tue, Aug 08, 2023 at 10:28:28AM +0200, Marek Behún wrote: > > Hi, > > > > the commit b0ce9ce408b6 ("gpiolib: Do not unexport GPIO on freeing") > > > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b0ce9ce408b6 > > > > causes a regression on my mvebu arm board (haven't tested on other > > systems), wherein if I export a GPIO to sysfs and then unexport it, it > > does not disasppear from the /sys/class/gpio directory, and subsequent > > writes to the export and unexport files for the gpio fail. > > > > $ cd /sys/class/gpio > > $ ls > > export gpiochip0 gpiochip32 gpiochip512 unexport > > $ echo 43 >export > > $ ls > > export gpio43 gpiochip0 gpiochip32 gpiochip512 > > unexport > > $ cat gpio43/value > > 1 > > $ echo 43 >unexport > > $ ls > > export gpio43 gpiochip0 gpiochip32 gpiochip512 > > unexport > > $ echo 43 >unexport > > ash: write error: Invalid argument > > $ echo 43 >export > > ash: write error: Operation not permitted > > Can you test the following change (I'll submit a formal patch if it works)? > > diff --git a/drivers/gpio/gpiolib-sysfs.c b/drivers/gpio/gpiolib-sysfs.c > index 530dfd19d7b5..b10a9b5598b2 100644 > --- a/drivers/gpio/gpiolib-sysfs.c > +++ b/drivers/gpio/gpiolib-sysfs.c > @@ -515,8 +515,9 @@ static ssize_t unexport_store(const struct class *class, > * they may be undone on its behalf too. > */ > if (test_and_clear_bit(FLAG_SYSFS, &desc->flags)) { > + gpiod_unexport(desc); > + gpiod_free(desc); > status = 0; > - gpiod_free(desc); > } > done: > if (status) > tested, works. Please add Fixes tag when sending the patch