From bc15294713119717cb1d3ebf760a5ad12ab837a3 Mon Sep 17 00:00:00 2001 From: David Ellingsworth Date: Mon, 13 Oct 2008 22:31:15 -0300 Subject: [PATCH] --- yaml --- r: 115596 b: refs/heads/master c: f051ae1866e67567b4f33371969dee9cdddb34ed h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/media/video/stk-webcam.c | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index 3a20f9993b7a..2530743f2b48 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 081d868faeb7acdd655c28607f84e797240bd035 +refs/heads/master: f051ae1866e67567b4f33371969dee9cdddb34ed diff --git a/trunk/drivers/media/video/stk-webcam.c b/trunk/drivers/media/video/stk-webcam.c index f1d5b3eaa192..edaea4964513 100644 --- a/trunk/drivers/media/video/stk-webcam.c +++ b/trunk/drivers/media/video/stk-webcam.c @@ -559,7 +559,7 @@ static void stk_clean_iso(struct stk_camera *dev) urb = dev->isobufs[i].urb; if (urb) { - if (atomic_read(&dev->urbs_used)) + if (atomic_read(&dev->urbs_used) && is_present(dev)) usb_kill_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; - if (dev->owner != fp) { - usb_autopm_put_interface(dev->interface); - return 0; + if (dev->owner == fp) { + stk_stop_stream(dev); + stk_free_buffers(dev); + dev->owner = NULL; } - stk_stop_stream(dev); - - stk_free_buffers(dev); - - dev->owner = NULL; - - usb_autopm_put_interface(dev->interface); + if(is_present(dev)) + usb_autopm_put_interface(dev->interface); return 0; }