Message ID | ZtjJKxQRRzJE0aWZ@google.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 2dc387620b85f2061fdcab172efdd9856999e987 |
Headers | show |
Series | None | expand |
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@gmail.com> > --- > > 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@gmail.com>
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; }
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@gmail.com> --- 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(-)