Commit f051ae18 authored by David Ellingsworth's avatar David Ellingsworth Committed by Mauro Carvalho Chehab

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: default avatarDavid Ellingsworth <david@identd.dyndns.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 081d868f
...@@ -559,7 +559,7 @@ static void stk_clean_iso(struct stk_camera *dev) ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment