V4L/DVB (6944a): Fix Regression VIDIOCGMBUF ioctl hangs on bttv driver
Gregor Jasny [Sun, 6 Jan 2008 14:15:54 +0000 (11:15 -0300)]
Fix bttv VIDIOCGMBUF locking like done in commit
820eacd84cff23b76693f4be1e28feb672f4488f.

Signed-off-by: Gregor Jasny <gjasny@web.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>

drivers/media/video/bt8xx/bttv-driver.c

index c02d92d..581a3c9 100644 (file)
@@ -3063,11 +3063,10 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
                struct video_mbuf *mbuf = arg;
                unsigned int i;
 
-               mutex_lock(&fh->cap.lock);
                retval = videobuf_mmap_setup(&fh->cap,gbuffers,gbufsize,
                                             V4L2_MEMORY_MMAP);
                if (retval < 0)
-                       goto fh_unlock_and_return;
+                       return retval;
 
                gbuffers = retval;
                memset(mbuf,0,sizeof(*mbuf));
@@ -3075,7 +3074,6 @@ static int bttv_do_ioctl(struct inode *inode, struct file *file,
                mbuf->size   = gbuffers * gbufsize;
                for (i = 0; i < gbuffers; i++)
                        mbuf->offsets[i] = i * gbufsize;
-               mutex_unlock(&fh->cap.lock);
                return 0;
        }
        case VIDIOCMCAPTURE: