mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
media: uvcvideo: Avoid race condition during unregister
The control events are handled asynchronously by the driver. Once the control event are handled, the urb is re-submitted. If we simply kill the urb, there is a chance that a control event is waiting to be processed, which will re-submit the urb after the device is disconnected. Fix this by calling uvc_status_suspend(), which flushes the async controls and kills the URB in a race-free manner. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org> Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> Link: https://lore.kernel.org/r/20240926-guenter-mini-v7-2-690441953d4a@chromium.org Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
44f7033860
commit
c5fe3ed618
1 changed files with 1 additions and 1 deletions
|
@ -294,7 +294,7 @@ int uvc_status_init(struct uvc_device *dev)
|
|||
|
||||
void uvc_status_unregister(struct uvc_device *dev)
|
||||
{
|
||||
usb_kill_urb(dev->int_urb);
|
||||
uvc_status_suspend(dev);
|
||||
uvc_input_unregister(dev);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue