V4L/DVB (9194): stk-webcam: fix crash on close after disconnect
This patch prevents stk-webcam from updating usb device information once the camera has been removed. This prevents a crash that would otherwise occur if the camera is disconnected while it is still in use. Signed-off-by: David Ellingsworth <david@identd.dyndns.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
081d868fae
commit
f051ae1866
|
@ -559,7 +559,7 @@ static void stk_clean_iso(struct stk_camera *dev)
|
||||||
|
|
||||||
urb = dev->isobufs[i].urb;
|
urb = dev->isobufs[i].urb;
|
||||||
if (urb) {
|
if (urb) {
|
||||||
if (atomic_read(&dev->urbs_used))
|
if (atomic_read(&dev->urbs_used) && is_present(dev))
|
||||||
usb_kill_urb(urb);
|
usb_kill_urb(urb);
|
||||||
usb_free_urb(urb);
|
usb_free_urb(urb);
|
||||||
}
|
}
|
||||||
|
@ -688,18 +688,14 @@ static int v4l_stk_release(struct inode *inode, struct file *fp)
|
||||||
{
|
{
|
||||||
struct stk_camera *dev = fp->private_data;
|
struct stk_camera *dev = fp->private_data;
|
||||||
|
|
||||||
if (dev->owner != fp) {
|
if (dev->owner == fp) {
|
||||||
usb_autopm_put_interface(dev->interface);
|
stk_stop_stream(dev);
|
||||||
return 0;
|
stk_free_buffers(dev);
|
||||||
|
dev->owner = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
stk_stop_stream(dev);
|
if(is_present(dev))
|
||||||
|
usb_autopm_put_interface(dev->interface);
|
||||||
stk_free_buffers(dev);
|
|
||||||
|
|
||||||
dev->owner = NULL;
|
|
||||||
|
|
||||||
usb_autopm_put_interface(dev->interface);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue