Input: ideapad_slidebar - use guard notation when acquiring spinlock
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 4 Sep 2024 04:42:30 +0000 (21:42 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 3 Oct 2024 16:10:36 +0000 (09:10 -0700)
Using guard notation makes the code more compact and error handling
more robust by ensuring that locks are released in all code paths
when control leaves critical section.

Reviewed-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Link: https://lore.kernel.org/r/20240904044244.1042174-11-dmitry.torokhov@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/misc/ideapad_slidebar.c

index 7f1b369..fea4a89 100644 (file)
@@ -95,41 +95,29 @@ static struct platform_device *slidebar_platform_dev;
 
 static u8 slidebar_pos_get(void)
 {
-       u8 res;
-       unsigned long flags;
+       guard(spinlock_irqsave)(&io_lock);
 
-       spin_lock_irqsave(&io_lock, flags);
        outb(0xf4, 0xff29);
        outb(0xbf, 0xff2a);
-       res = inb(0xff2b);
-       spin_unlock_irqrestore(&io_lock, flags);
-
-       return res;
+       return inb(0xff2b);
 }
 
 static u8 slidebar_mode_get(void)
 {
-       u8 res;
-       unsigned long flags;
+       guard(spinlock_irqsave)(&io_lock);
 
-       spin_lock_irqsave(&io_lock, flags);
        outb(0xf7, 0xff29);
        outb(0x8b, 0xff2a);
-       res = inb(0xff2b);
-       spin_unlock_irqrestore(&io_lock, flags);
-
-       return res;
+       return inb(0xff2b);
 }
 
 static void slidebar_mode_set(u8 mode)
 {
-       unsigned long flags;
+       guard(spinlock_irqsave)(&io_lock);
 
-       spin_lock_irqsave(&io_lock, flags);
        outb(0xf7, 0xff29);
        outb(0x8b, 0xff2a);
        outb(mode, 0xff2b);
-       spin_unlock_irqrestore(&io_lock, flags);
 }
 
 static bool slidebar_i8042_filter(unsigned char data, unsigned char str,