On Fri, Oct 25, 2024 at 02:18:51PM +0200, Bartosz Golaszewski wrote: > From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> > > Shrink the code and drop some goto labels by using lock guards around > gpiod_data::mutex. > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> > --- > drivers/gpio/gpiolib-sysfs.c | 81 ++++++++++++++++---------------------------- > 1 file changed, 29 insertions(+), 52 deletions(-) > > @@ -139,19 +132,17 @@ static ssize_t value_store(struct device *dev, > long value; > > status = kstrtol(buf, 0, &value); > + if (status) > + return status; > > - mutex_lock(&data->mutex); > + guard(mutex)(&data->mutex); > > - if (!test_bit(FLAG_IS_OUT, &desc->flags)) { > - status = -EPERM; > - } else if (status == 0) { > - gpiod_set_value_cansleep(desc, value); > - status = size; > - } > + if (!test_bit(FLAG_IS_OUT, &desc->flags)) > + return -EPERM; > > - mutex_unlock(&data->mutex); > + gpiod_set_value_cansleep(desc, value); > > - return status; > + return size; > } This is a behavioural change as you've moved the decode check before the permission check. Not sure if that is significant or not, so in my suggestion I retained the old order. Cheers, Kent.