2021-08-02 22:39:29

by Salah Triki

[permalink] [raw]
Subject: [PATCH] staging: gdm724x: get lock before calling usb_[disable|enable]_autosuspend()

Based on the documentation of usb_[disable|enable]_autosuspend(), the
caller must hold udev's device lock.

Signed-off-by: Salah Triki <[email protected]>
---
drivers/staging/gdm724x/gdm_usb.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/staging/gdm724x/gdm_usb.c b/drivers/staging/gdm724x/gdm_usb.c
index 54bdb64f52e8..31b3b3e563c8 100644
--- a/drivers/staging/gdm724x/gdm_usb.c
+++ b/drivers/staging/gdm724x/gdm_usb.c
@@ -846,7 +846,9 @@ static int gdm_usb_probe(struct usb_interface *intf,
udev->intf = intf;

intf->needs_remote_wakeup = 1;
+ usb_lock_device(usbdev);
usb_enable_autosuspend(usbdev);
+ usb_unlock_device(usbdev);
pm_runtime_set_autosuspend_delay(&usbdev->dev, AUTO_SUSPEND_TIMER);

/* List up hosts with big endians, otherwise,
--
2.25.1



2021-08-03 05:18:18

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] staging: gdm724x: get lock before calling usb_[disable|enable]_autosuspend()

On Mon, Aug 02, 2021 at 11:37:03PM +0100, Salah Triki wrote:
> Based on the documentation of usb_[disable|enable]_autosuspend(), the
> caller must hold udev's device lock.
>
> Signed-off-by: Salah Triki <[email protected]>
> ---
> drivers/staging/gdm724x/gdm_usb.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/staging/gdm724x/gdm_usb.c b/drivers/staging/gdm724x/gdm_usb.c
> index 54bdb64f52e8..31b3b3e563c8 100644
> --- a/drivers/staging/gdm724x/gdm_usb.c
> +++ b/drivers/staging/gdm724x/gdm_usb.c
> @@ -846,7 +846,9 @@ static int gdm_usb_probe(struct usb_interface *intf,
> udev->intf = intf;
>
> intf->needs_remote_wakeup = 1;
> + usb_lock_device(usbdev);
> usb_enable_autosuspend(usbdev);
> + usb_unlock_device(usbdev);
> pm_runtime_set_autosuspend_delay(&usbdev->dev, AUTO_SUSPEND_TIMER);
>
> /* List up hosts with big endians, otherwise,
> --
> 2.25.1

Please look at the other places where this function is called and note
that the pattern you have added here is not used in those situations
either, so perhaps this change is not correct at all.

thanks,

greg k-h