Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
[pandora-kernel.git] / drivers / media / video / v4l2-event.c
index de74ce0..69fd343 100644 (file)
@@ -134,15 +134,22 @@ int v4l2_event_dequeue(struct v4l2_fh *fh, struct v4l2_event *event,
        if (nonblocking)
                return __v4l2_event_dequeue(fh, event);
 
+       /* Release the vdev lock while waiting */
+       if (fh->vdev->lock)
+               mutex_unlock(fh->vdev->lock);
+
        do {
                ret = wait_event_interruptible(events->wait,
                                               events->navailable != 0);
                if (ret < 0)
-                       return ret;
+                       break;
 
                ret = __v4l2_event_dequeue(fh, event);
        } while (ret == -ENOENT);
 
+       if (fh->vdev->lock)
+               mutex_lock(fh->vdev->lock);
+
        return ret;
 }
 EXPORT_SYMBOL_GPL(v4l2_event_dequeue);