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 --- drivers/media/video/usbvision/usbvision-video.c | 2 ++ 1 file changed, 2 insertions(+) diff -puN drivers/media/video/usbvision/usbvision-video.c~media-video-usbvision-add-mutex_unlock-to-error-paths drivers/media/video/usbvision/usbvision-video.c --- a/drivers/media/video/usbvision/usbvision-video.c~media-video-usbvision-add-mutex_unlock-to-error-paths +++ a/drivers/media/video/usbvision/usbvision-video.c @@ -1290,6 +1290,7 @@ static int usbvision_radio_open(struct i errCode = usbvision_set_alternate(usbvision); if (errCode < 0) { usbvision->last_error = errCode; + mutex_unlock(&usbvision->lock); return -EBUSY; } @@ -1807,6 +1808,7 @@ static int __devinit usbvision_probe(str usbvision->num_alt,GFP_KERNEL); if (usbvision->alt_max_pkt_size == NULL) { err("usbvision: out of memory!\n"); + mutex_unlock(&usbvision->lock); return -ENOMEM; } _