On 1/7/25 9:25 AM, Jonathan Santos wrote: > Use guard(mutex) from cleanup.h to remove most of the gotos and to make > the code simpler and less likely to fail due to forgetting to unlock > the resources. > > Signed-off-by: Jonathan Santos <Jonathan.Santos@xxxxxxxxxx> > --- ... > @@ -484,7 +477,7 @@ static irqreturn_t ad7768_trigger_handler(int irq, void *p) > struct ad7768_state *st = iio_priv(indio_dev); > int ret; > > - mutex_lock(&st->lock); > + guard(mutex)(&st->lock); > > ret = spi_read(st->spi, &st->data.scan.chan, 3); > if (ret < 0) > @@ -495,7 +488,6 @@ static irqreturn_t ad7768_trigger_handler(int irq, void *p) > > err_unlock: nit: also rename the label since it is no longer unlocking > iio_trigger_notify_done(indio_dev->trig); > - mutex_unlock(&st->lock); > > return IRQ_HANDLED; > } I'm also wondering if we should just drop this lock. It is only protecting a triggered buffer SPI xfer and debugfs register access from happening at the same time. Since we have to write a magic value to exit conversion mode, reading registers during a buffered read is going to cause problems anyway. So we could just remove the mutex lock and use iio_device_claim_direct_mode() instead in ad7768_reg_access().