Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Input: ipaq-micro-keys - use guard notation when acquiring mutex and spinlock

This 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.

Link: https://lore.kernel.org/r/20240825051627.2848495-8-dmitry.torokhov@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

+5 -7
+5 -7
drivers/input/keyboard/ipaq-micro-keys.c
··· 54 54 55 55 static void micro_key_start(struct ipaq_micro_keys *keys) 56 56 { 57 - spin_lock(&keys->micro->lock); 57 + guard(spinlock)(&keys->micro->lock); 58 + 58 59 keys->micro->key = micro_key_receive; 59 60 keys->micro->key_data = keys; 60 - spin_unlock(&keys->micro->lock); 61 61 } 62 62 63 63 static void micro_key_stop(struct ipaq_micro_keys *keys) 64 64 { 65 - spin_lock(&keys->micro->lock); 65 + guard(spinlock)(&keys->micro->lock); 66 + 66 67 keys->micro->key = NULL; 67 68 keys->micro->key_data = NULL; 68 - spin_unlock(&keys->micro->lock); 69 69 } 70 70 71 71 static int micro_key_open(struct input_dev *input) ··· 141 141 struct ipaq_micro_keys *keys = dev_get_drvdata(dev); 142 142 struct input_dev *input = keys->input; 143 143 144 - mutex_lock(&input->mutex); 144 + guard(mutex)(&input->mutex); 145 145 146 146 if (input_device_enabled(input)) 147 147 micro_key_start(keys); 148 - 149 - mutex_unlock(&input->mutex); 150 148 151 149 return 0; 152 150 }