Input: bcm5974 - use guard notation when acquiring mutex
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Sun, 25 Aug 2024 05:29:56 +0000 (22:29 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 29 Aug 2024 18:00:21 +0000 (11:00 -0700)
This 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.

Acked-by: Henrik Rydberg <rydberg@bitmath.org>
Link: https://lore.kernel.org/r/ZsrBVO2w9WwX73iU@google.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/mouse/bcm5974.c

index 10a03a56690588a2ed68b86dd054acd977708bf5..dfdfb59cc8b5978c1b86e6cb1eb9251caf4765bf 100644 (file)
@@ -834,13 +834,11 @@ static int bcm5974_open(struct input_dev *input)
        if (error)
                return error;
 
-       mutex_lock(&dev->pm_mutex);
-
-       error = bcm5974_start_traffic(dev);
-       if (!error)
-               dev->opened = 1;
-
-       mutex_unlock(&dev->pm_mutex);
+       scoped_guard(mutex, &dev->pm_mutex) {
+               error = bcm5974_start_traffic(dev);
+               if (!error)
+                       dev->opened = 1;
+       }
 
        if (error)
                usb_autopm_put_interface(dev->intf);
@@ -852,12 +850,10 @@ static void bcm5974_close(struct input_dev *input)
 {
        struct bcm5974 *dev = input_get_drvdata(input);
 
-       mutex_lock(&dev->pm_mutex);
-
-       bcm5974_pause_traffic(dev);
-       dev->opened = 0;
-
-       mutex_unlock(&dev->pm_mutex);
+       scoped_guard(mutex, &dev->pm_mutex) {
+               bcm5974_pause_traffic(dev);
+               dev->opened = 0;
+       }
 
        usb_autopm_put_interface(dev->intf);
 }
@@ -866,29 +862,24 @@ static int bcm5974_suspend(struct usb_interface *iface, pm_message_t message)
 {
        struct bcm5974 *dev = usb_get_intfdata(iface);
 
-       mutex_lock(&dev->pm_mutex);
+       guard(mutex)(&dev->pm_mutex);
 
        if (dev->opened)
                bcm5974_pause_traffic(dev);
 
-       mutex_unlock(&dev->pm_mutex);
-
        return 0;
 }
 
 static int bcm5974_resume(struct usb_interface *iface)
 {
        struct bcm5974 *dev = usb_get_intfdata(iface);
-       int error = 0;
 
-       mutex_lock(&dev->pm_mutex);
+       guard(mutex)(&dev->pm_mutex);
 
        if (dev->opened)
-               error = bcm5974_start_traffic(dev);
+               return bcm5974_start_traffic(dev);
 
-       mutex_unlock(&dev->pm_mutex);
-
-       return error;
+       return 0;
 }
 
 static int bcm5974_probe(struct usb_interface *iface,
This page took 0.056979 seconds and 4 git commands to generate.