Re: [PATCH] media: fix task hung in vb2_video_unregister_device

Hans Verkuil
2024-02-29T12:36:12Z

On 2/29/24 13:21, Edward Adam Davis wrote:
> vb2_video_unregister_device() will get vb2q_lock, so usbtv_video_free() does
> not need vb2q_lock.
>
> Reported-and-tested-by: syzbot+2622b51b35f91a00ea18@syzkaller.appspotmail.com
> Signed-off-by: Edward Adam Davis <eadavis@qq.com>

Duplicate of:

https://lore.kernel.org/linux-media/19cdefd3-163b-41a1-b603-764aab4b5b90@xs4all.nl/

I'm waiting for a v2 of that one.

Regards,

Hans

> ---
> drivers/media/usb/usbtv/usbtv-video.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/drivers/media/usb/usbtv/usbtv-video.c b/drivers/media/usb/usbtv/usbtv-video.c
> index 62a583040cd4..b55f432b44d4 100644
> --- a/drivers/media/usb/usbtv/usbtv-video.c
> +++ b/drivers/media/usb/usbtv/usbtv-video.c
> @@ -963,7 +963,6 @@ int usbtv_video_init(struct usbtv *usbtv)
>
> void usbtv_video_free(struct usbtv *usbtv)
> {
> - mutex_lock(&usbtv->vb2q_lock);
> mutex_lock(&usbtv->v4l2_lock);
>
> usbtv_stop(usbtv);
> @@ -971,7 +970,6 @@ void usbtv_video_free(struct usbtv *usbtv)
> v4l2_device_disconnect(&usbtv->v4l2_dev);
>
> mutex_unlock(&usbtv->v4l2_lock);
> - mutex_unlock(&usbtv->vb2q_lock);
>
> v4l2_device_put(&usbtv->v4l2_dev);
> }