Index: usb-devel/drivers/media/usb/usbvision/usbvision-video.c =================================================================== --- usb-devel.orig/drivers/media/usb/usbvision/usbvision-video.c +++ usb-devel/drivers/media/usb/usbvision/usbvision-video.c @@ -1585,6 +1585,7 @@ static void usbvision_disconnect(struct wake_up_interruptible(&usbvision->wait_frame); wake_up_interruptible(&usbvision->wait_stream); } else { + msleep(100); usbvision_release(usbvision); } Index: usb-devel/drivers/media/v4l2-core/v4l2-dev.c =================================================================== --- usb-devel.orig/drivers/media/v4l2-core/v4l2-dev.c +++ usb-devel/drivers/media/v4l2-core/v4l2-dev.c @@ -419,9 +419,10 @@ static int v4l2_open(struct inode *inode video_get(vdev); mutex_unlock(&videodev_lock); if (vdev->fops->open) { - if (video_is_registered(vdev)) + if (video_is_registered(vdev)) { + msleep(200); ret = vdev->fops->open(filp); - else + } else ret = -ENODEV; }