Input: pxrc - simplify mutex handling with guard macro
Subsystems (3)
Marcus Folkesson
maintainerPATCH v3 1/1 Input: pxrc - simplify mutex handling with guard macro
Use the guard(mutex) macro for handle mutex lock/unlocks.
Signed-off-by Marcus Folkesson <[email protected]>
---
Changes in v3:
- Rename retval->error in pxrc_open() as it now only holds error code
- Return early instead of assign retval in pxrc_resume()
- Link to v2: https://lore.kernel.org/r/[email protected]
Changes in v2:
- Add guard in pxrc_open()
- Link to v1: https://lore.kernel.org/r/[email protected]
--- drivers/input/joystick/pxrc.c | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-)
drivers/input/joystick/pxrc.c +18 -24
@@ -5,15 +5,17 @@* Copyright (C) 2018 Marcus Folkesson <[email protected]> */ -#include <linux/kernel.h> +#include <linux/cleanup.h> #include <linux/errno.h> -#include <linux/slab.h> +#include <linux/input.h> +#include <linux/kernel.h> #include <linux/module.h> +#include <linux/mutex.h> +#include <linux/slab.h> #include <linux/uaccess.h> +#include <linux/usb.h> #include <linux/usb/input.h> -#include <linux/mutex.h> -#include <linux/input.h> #define PXRC_VENDOR_ID 0x1781#define PXRC_PRODUCT_ID 0x0898
@@ -81,33 +83,28 @@ static void pxrc_usb_irq(struct urb *urb)static int pxrc_open (struct input_dev *input) {struct pxrc *pxrc =input_get_drvdata (input); -int retval; +int error; -mutex_lock (&pxrc->pm_mutex); - retval =usb_submit_urb (pxrc->urb,GFP_KERNEL ); -if (retval) { +guard (mutex)(&pxrc->pm_mutex); + error =usb_submit_urb (pxrc->urb,GFP_KERNEL ); +if (error) {dev_err (&pxrc->intf->dev,"%s - usb_submit_urb failed, error: %d\n" , - __func__, retval); - retval = -EIO ; - goto out; + __func__, error); +return -EIO ; } pxrc->is_open = true; - -out: -mutex_unlock (&pxrc->pm_mutex); -return retval; +return 0 ; }static void pxrc_close (struct input_dev *input) {struct pxrc *pxrc =input_get_drvdata (input); -mutex_lock (&pxrc->pm_mutex); +guard (mutex)(&pxrc->pm_mutex);usb_kill_urb (pxrc->urb); pxrc->is_open = false; -mutex_unlock (&pxrc->pm_mutex); }static void pxrc_free_urb (void *_pxrc)
@@ -208,10 +205,9 @@ static int pxrc_suspend(struct usb_interface *intf, pm_message_t message) {struct pxrc *pxrc =usb_get_intfdata (intf); -mutex_lock (&pxrc->pm_mutex); +guard (mutex)(&pxrc->pm_mutex);if (pxrc->is_open)usb_kill_urb (pxrc->urb); -mutex_unlock (&pxrc->pm_mutex);return 0 ; }
@@ -219,14 +215,12 @@ static int pxrc_suspend(struct usb_interface *intf, pm_message_t message)static int pxrc_resume (struct usb_interface *intf) {struct pxrc *pxrc =usb_get_intfdata (intf); -int retval =0 ; -mutex_lock (&pxrc->pm_mutex); +guard (mutex)(&pxrc->pm_mutex);if (pxrc->is_open &&usb_submit_urb (pxrc->urb,GFP_KERNEL ) <0 ) - retval = -EIO ; +return -EIO ; -mutex_unlock (&pxrc->pm_mutex); -return retval; +return 0 ; }static int pxrc_pre_reset (struct usb_interface *intf)
---
base-commit: ffc253263a1375a65fa6c9f62a893e9767fbebfa
change-id: 20231201-pxrc-guard-03dc35771b36
Best regards,
Signature · 1 line
Marcus Folkesson <[email protected]>
Quoted 3 lines · Marcus Folkesson
Use the guard(mutex) macro for handle mutex lock/unlocks.
Signed-off-by Marcus Folkesson <[email protected]>
Applied, thank you.
Signature · 1 line
Dmitry