From e957db9edd45ce247ae6eda39c5e0cb07d3230fa Mon Sep 17 00:00:00 2001 From: Thierry MERLE Date: Wed, 12 Dec 2007 22:22:48 +0100 Subject: media: video: usbvision: add mutex_unlock() to error paths From: Daniel Walker There are a few error paths which don't unlock the usbvision->lock. So I've added mutex_unlock() calls to fix those paths. Signed-off-by: Daniel Walker Cc: Mauro Carvalho Chehab Signed-off-by: Andrew Morton Signed-off-by: Thierry MERLE --- linux/drivers/media/video/usbvision/usbvision-video.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/linux/drivers/media/video/usbvision/usbvision-video.c b/linux/drivers/media/video/usbvision/usbvision-video.c index 04a38c355..92d2a92fd 100644 --- a/linux/drivers/media/video/usbvision/usbvision-video.c +++ b/linux/drivers/media/video/usbvision/usbvision-video.c @@ -1339,6 +1339,7 @@ static int usbvision_radio_open(struct inode *inode, struct file *file) errCode = usbvision_set_alternate(usbvision); if (errCode < 0) { usbvision->last_error = errCode; + mutex_unlock(&usbvision->lock); return -EBUSY; } @@ -1964,6 +1965,7 @@ static int __devinit usbvision_probe(struct usb_interface *intf, usbvision->num_alt,GFP_KERNEL); if (usbvision->alt_max_pkt_size == NULL) { err("usbvision: out of memory!\n"); + mutex_unlock(&usbvision->lock); return -ENOMEM; } -- cgit v1.2.3 From af0e3689d502650b164b118360f25423eb0b1797 Mon Sep 17 00:00:00 2001 From: Thierry MERLE Date: Wed, 12 Dec 2007 22:25:23 +0100 Subject: media-video-usbvision-add-mutex_unlock-to-error-paths-fix From: Andrew Morton Cc: Daniel Walker Cc: Mauro Carvalho Chehab Signed-off-by: Andrew Morton Signed-off-by: Thierry MERLE --- linux/drivers/media/video/usbvision/usbvision-video.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/linux/drivers/media/video/usbvision/usbvision-video.c b/linux/drivers/media/video/usbvision/usbvision-video.c index 92d2a92fd..e0b079baf 100644 --- a/linux/drivers/media/video/usbvision/usbvision-video.c +++ b/linux/drivers/media/video/usbvision/usbvision-video.c @@ -1339,8 +1339,8 @@ static int usbvision_radio_open(struct inode *inode, struct file *file) errCode = usbvision_set_alternate(usbvision); if (errCode < 0) { usbvision->last_error = errCode; - mutex_unlock(&usbvision->lock); - return -EBUSY; + errCode = -EBUSY; + goto out; } // If so far no errors then we shall start the radio @@ -1360,6 +1360,7 @@ static int usbvision_radio_open(struct inode *inode, struct file *file) usbvision->initialized = 0; } } +out: mutex_unlock(&usbvision->lock); return errCode; } -- cgit v1.2.3 From e4be4ca4e052d77fbf7e19b7a88d4da1ad1aa64e Mon Sep 17 00:00:00 2001 From: Thierry MERLE Date: Wed, 12 Dec 2007 22:37:54 +0100 Subject: media: video: usbvision: remove ctrlUrbLock From: Daniel Walker The ctrlUrbLock has all it's users commented out, and so it's unused. This patch removes it. Signed-off-by: Daniel Walker Cc: Mauro Carvalho Chehab Signed-off-by: Andrew Morton Signed-off-by: Thierry MERLE --- linux/drivers/media/video/usbvision/usbvision-core.c | 3 --- linux/drivers/media/video/usbvision/usbvision-video.c | 1 - linux/drivers/media/video/usbvision/usbvision.h | 1 - 3 files changed, 5 deletions(-) diff --git a/linux/drivers/media/video/usbvision/usbvision-core.c b/linux/drivers/media/video/usbvision/usbvision-core.c index 996203969..96fcd5987 100644 --- a/linux/drivers/media/video/usbvision/usbvision-core.c +++ b/linux/drivers/media/video/usbvision/usbvision-core.c @@ -1611,13 +1611,10 @@ static int usbvision_write_reg_irq(struct usb_usbvision *usbvision,int address, if (len > 8) { return -EFAULT; } -// down(&usbvision->ctrlUrbLock); if (usbvision->ctrlUrbBusy) { -// up(&usbvision->ctrlUrbLock); return -EBUSY; } usbvision->ctrlUrbBusy = 1; -// up(&usbvision->ctrlUrbLock); #if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20) usbvision->ctrlUrbSetup.requesttype = USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_ENDPOINT; diff --git a/linux/drivers/media/video/usbvision/usbvision-video.c b/linux/drivers/media/video/usbvision/usbvision-video.c index e0b079baf..385b4709a 100644 --- a/linux/drivers/media/video/usbvision/usbvision-video.c +++ b/linux/drivers/media/video/usbvision/usbvision-video.c @@ -1808,7 +1808,6 @@ static struct usb_usbvision *usbvision_alloc(struct usb_device *dev) goto err_exit; } init_waitqueue_head(&usbvision->ctrlUrb_wq); - init_MUTEX(&usbvision->ctrlUrbLock); /* to 1 == available */ usbvision_init_powerOffTimer(usbvision); diff --git a/linux/drivers/media/video/usbvision/usbvision.h b/linux/drivers/media/video/usbvision/usbvision.h index 3b3f1ca0e..9f4c40dbf 100644 --- a/linux/drivers/media/video/usbvision/usbvision.h +++ b/linux/drivers/media/video/usbvision/usbvision.h @@ -373,7 +373,6 @@ struct usb_usbvision { int ctrlUrbBusy; struct usb_ctrlrequest ctrlUrbSetup; wait_queue_head_t ctrlUrb_wq; // Processes waiting - struct semaphore ctrlUrbLock; /* configuration part */ int have_tuner; -- cgit v1.2.3