[1] https://elixir.bootlin.com/linux/latest/source/drivers/media/v4l2-core/v4l2-ioctl.c#L3023 Best regards, Tomasz > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > index bbd90123a4e76..17fc945c8deb6 100644 > --- a/drivers/media/usb/uvc/uvc_driver.c > +++ b/drivers/media/usb/uvc/uvc_driver.c > @@ -1911,8 +1911,19 @@ static void uvc_unregister_video(struct uvc_device *dev) > if (!video_is_registered(&stream->vdev)) > continue; > > + /* > + * Serialize other access to the stream. > + */ > + mutex_lock(&stream->mutex); > + uvc_queue_streamoff(&stream->queue, stream->type); > video_unregister_device(&stream->vdev); > video_unregister_device(&stream->meta.vdev); > + mutex_unlock(&stream->mutex); > + > + /* > + * Now the vdev is not streaming and all the ioctls will > + * return -ENODEV > + */ > > uvc_debugfs_cleanup_stream(stream); > } > > -- > 2.44.0.396.g6e790dbe36-goog >