Input: psmouse-smbus - use guard notation when acquiring mutex
Subsystems (2)
Dmitry Torokhov
maintainerPATCH 1/1 Input: psmouse-smbus - use guard notation when acquiring mutex
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.
Signed-off-by Dmitry Torokhov <[email protected]>
--- drivers/input/mouse/psmouse-smbus.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-)
drivers/input/mouse/psmouse-smbus.c +10 -18
@@ -35,7 +35,7 @@ static void psmouse_smbus_check_adapter(struct i2c_adapter *adapter)if (!i2c_check_functionality (adapter,I2C_FUNC_SMBUS_HOST_NOTIFY ))return ; -mutex_lock (&psmouse_smbus_mutex); +guard (mutex)(&psmouse_smbus_mutex);list_for_each_entry (smbdev, &psmouse_smbus_list, node) {if (smbdev->dead)
@@ -55,15 +55,13 @@ static void psmouse_smbus_check_adapter(struct i2c_adapter *adapter) "SMBus candidate adapter appeared, triggering rescan\n");serio_rescan (smbdev->psmouse->ps2dev.serio); } - -mutex_unlock (&psmouse_smbus_mutex); }static void psmouse_smbus_detach_i2c_client (struct i2c_client *client) {struct psmouse_smbus_dev *smbdev, *tmp; -mutex_lock (&psmouse_smbus_mutex); +guard (mutex)(&psmouse_smbus_mutex);list_for_each_entry_safe (smbdev, tmp, &psmouse_smbus_list, node) {if (smbdev->client != client)
@@ -85,8 +83,6 @@ static void psmouse_smbus_detach_i2c_client(struct i2c_client *client)kfree (smbdev); } } - -mutex_unlock (&psmouse_smbus_mutex); } static int psmouse_smbus_notifier_call(struct notifier_block *nb,
@@ -171,7 +167,7 @@ static void psmouse_smbus_disconnect(struct psmouse *psmouse) {struct psmouse_smbus_dev *smbdev = psmouse->private; -mutex_lock (&psmouse_smbus_mutex); +guard (mutex)(&psmouse_smbus_mutex);if (smbdev->dead) {list_del (&smbdev->node);
@@ -186,8 +182,6 @@ static void psmouse_smbus_disconnect(struct psmouse *psmouse)psmouse_smbus_schedule_remove (smbdev->client); } -mutex_unlock (&psmouse_smbus_mutex); - psmouse->private =NULL ; }
@@ -219,7 +213,7 @@ void psmouse_smbus_cleanup(struct psmouse *psmouse) {struct psmouse_smbus_dev *smbdev, *tmp; -mutex_lock (&psmouse_smbus_mutex); +guard (mutex)(&psmouse_smbus_mutex);list_for_each_entry_safe (smbdev, tmp, &psmouse_smbus_list, node) {if (psmouse == smbdev->psmouse) {
@@ -227,8 +221,6 @@ void psmouse_smbus_cleanup(struct psmouse *psmouse)kfree (smbdev); } } - -mutex_unlock (&psmouse_smbus_mutex); } int psmouse_smbus_init(struct psmouse *psmouse,
@@ -267,9 +259,9 @@ int psmouse_smbus_init(struct psmouse *psmouse, psmouse->disconnect = psmouse_smbus_disconnect; psmouse->resync_time =0 ; -mutex_lock (&psmouse_smbus_mutex); -list_add_tail (&smbdev->node, &psmouse_smbus_list); -mutex_unlock (&psmouse_smbus_mutex); + scoped_guard(mutex, &psmouse_smbus_mutex) { +list_add_tail (&smbdev->node, &psmouse_smbus_list); + }/* Bind to already existing adapters right away */ error =i2c_for_each_dev (smbdev, psmouse_smbus_create_companion);
@@ -293,9 +285,9 @@ int psmouse_smbus_init(struct psmouse *psmouse, smbdev->board.platform_data =NULL ;if (error <0 || !leave_breadcrumbs) { -mutex_lock (&psmouse_smbus_mutex); -list_del (&smbdev->node); -mutex_unlock (&psmouse_smbus_mutex); + scoped_guard(mutex, &psmouse_smbus_mutex) { +list_del (&smbdev->node); + }kfree (smbdev); }
Signature · 5 lines
2.46.0.295.g3b9ea8a38a-goog -- Dmitry
Quoted 1 line
This makes the code …
How do you think about to improve such a change description with imperative wordings?
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.11-rc5#n94
Regards,
Markus
Dmitry Torokhov
maintainerQuoted 5 lines · Dmitry Torokhov
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.
Signed-off-by Dmitry Torokhov <[email protected]>
Applied since there were no objections.
Thanks.
Signature · 1 line
Dmitry