On 04/09/2024 22:55, Dmitry Torokhov wrote: > Using guard notation makes the code more compact and error handling > more robust by ensuring that mutexes are released in all code paths > when control leaves critical section. > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> > --- > > v2: drop no linger used "error" variable in regulator_haptic_suspend() > > drivers/input/misc/regulator-haptic.c | 24 ++++++++---------------- > 1 file changed, 8 insertions(+), 16 deletions(-) > > diff --git a/drivers/input/misc/regulator-haptic.c b/drivers/input/misc/regulator-haptic.c > index 02f73b7c0462..3666ba6d1f30 100644 > --- a/drivers/input/misc/regulator-haptic.c > +++ b/drivers/input/misc/regulator-haptic.c > @@ -83,12 +83,10 @@ static void regulator_haptic_work(struct work_struct *work) > struct regulator_haptic *haptic = container_of(work, > struct regulator_haptic, work); > > - mutex_lock(&haptic->mutex); > + guard(mutex)(&haptic->mutex); > > if (!haptic->suspended) > regulator_haptic_set_voltage(haptic, haptic->magnitude); > - > - mutex_unlock(&haptic->mutex); > } > > static int regulator_haptic_play_effect(struct input_dev *input, void *data, > @@ -205,19 +203,15 @@ static int regulator_haptic_suspend(struct device *dev) > { > struct platform_device *pdev = to_platform_device(dev); > struct regulator_haptic *haptic = platform_get_drvdata(pdev); > - int error; > > - error = mutex_lock_interruptible(&haptic->mutex); > - if (error) > - return error; > - > - regulator_haptic_set_voltage(haptic, 0); > + scoped_guard(mutex_intr, &haptic->mutex) { > + regulator_haptic_set_voltage(haptic, 0); > + haptic->suspended = true; > > - haptic->suspended = true; > - > - mutex_unlock(&haptic->mutex); > + return 0; > + } > > - return 0; > + return -EINTR; > } > > static int regulator_haptic_resume(struct device *dev) > @@ -226,7 +220,7 @@ static int regulator_haptic_resume(struct device *dev) > struct regulator_haptic *haptic = platform_get_drvdata(pdev); > unsigned int magnitude; > > - mutex_lock(&haptic->mutex); > + guard(mutex)(&haptic->mutex); > > haptic->suspended = false; > > @@ -234,8 +228,6 @@ static int regulator_haptic_resume(struct device *dev) > if (magnitude) > regulator_haptic_set_voltage(haptic, magnitude); > > - mutex_unlock(&haptic->mutex); > - > return 0; > } > Reviewed-by: Javier Carrasco <javier.carrasco.cruz@xxxxxxxxx>