[PATCH] media: fix task hung in vb2_video_unregister_device

Edward Adam Davis
2024-02-29T12:21:28Z

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>
---
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);
}
--
2.43.0