mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 05:06:29 +00:00
Input: powermate - use guard notation when acquiring spinlock
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/20240904044902.1049017-1-dmitry.torokhov@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
parent
0e7b4bc31d
commit
c684921854
@ -194,22 +194,18 @@ static void powermate_sync_state(struct powermate_device *pm)
|
||||
static void powermate_config_complete(struct urb *urb)
|
||||
{
|
||||
struct powermate_device *pm = urb->context;
|
||||
unsigned long flags;
|
||||
|
||||
if (urb->status)
|
||||
printk(KERN_ERR "powermate: config urb returned %d\n", urb->status);
|
||||
|
||||
spin_lock_irqsave(&pm->lock, flags);
|
||||
guard(spinlock_irqsave)(&pm->lock);
|
||||
powermate_sync_state(pm);
|
||||
spin_unlock_irqrestore(&pm->lock, flags);
|
||||
}
|
||||
|
||||
/* Set the LED up as described and begin the sync with the hardware if required */
|
||||
static void powermate_pulse_led(struct powermate_device *pm, int static_brightness, int pulse_speed,
|
||||
int pulse_table, int pulse_asleep, int pulse_awake)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
if (pulse_speed < 0)
|
||||
pulse_speed = 0;
|
||||
if (pulse_table < 0)
|
||||
@ -222,8 +218,7 @@ static void powermate_pulse_led(struct powermate_device *pm, int static_brightne
|
||||
pulse_asleep = !!pulse_asleep;
|
||||
pulse_awake = !!pulse_awake;
|
||||
|
||||
|
||||
spin_lock_irqsave(&pm->lock, flags);
|
||||
guard(spinlock_irqsave)(&pm->lock);
|
||||
|
||||
/* mark state updates which are required */
|
||||
if (static_brightness != pm->static_brightness) {
|
||||
@ -245,8 +240,6 @@ static void powermate_pulse_led(struct powermate_device *pm, int static_brightne
|
||||
}
|
||||
|
||||
powermate_sync_state(pm);
|
||||
|
||||
spin_unlock_irqrestore(&pm->lock, flags);
|
||||
}
|
||||
|
||||
/* Callback from the Input layer when an event arrives from userspace to configure the LED */
|
||||
|
Loading…
Reference in New Issue
Block a user