V4L/DVB (9909): em28xx: move dev->lock from res_free to the caller routines
authorMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 16 Dec 2008 23:00:49 +0000 (20:00 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 30 Dec 2008 11:39:13 +0000 (09:39 -0200)
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/em28xx/em28xx-video.c

index 6e558d2ca0f3b4801bcedd20aefbad1b500a211d..90aedaeb09b9f4ebc5af9dfb2d3a3ee015542cd2 100644 (file)
@@ -617,10 +617,8 @@ static void res_free(struct em28xx_fh *fh)
 {
        struct em28xx    *dev = fh->dev;
 
-       mutex_lock(&dev->lock);
        fh->stream_on = 0;
        dev->stream_on = 0;
-       mutex_unlock(&dev->lock);
 }
 
 /*
@@ -1282,7 +1280,9 @@ static int vidioc_streamoff(struct file *file, void *priv,
                return -EINVAL;
 
        videobuf_streamoff(&fh->vb_vidq);
+       mutex_lock(&dev->lock);
        res_free(fh);
+       mutex_unlock(&dev->lock);
 
        return 0;
 }
@@ -1677,11 +1677,10 @@ static int em28xx_v4l2_close(struct inode *inode, struct file *filp)
        em28xx_videodbg("users=%d\n", dev->users);
 
 
+       mutex_lock(&dev->lock);
        if (res_check(fh))
                res_free(fh);
 
-       mutex_lock(&dev->lock);
-
        if (dev->users == 1) {
                videobuf_stop(&fh->vb_vidq);
                videobuf_mmap_free(&fh->vb_vidq);