drm/vmwgfx: use drm_modeset_lock_all
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 2 Dec 2012 00:48:38 +0000 (01:48 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 20 Jan 2013 21:16:52 +0000 (22:16 +0100)
Ok, this one here is a bit more complicated, and I can't really claim
to fully understand the locking and lifetime rules of the vmwgfx
driver. So just convert ever mutex_lock call, including the
interruptible one. Since other places (e.g. in the execbuf ioctl) take
the mode_config.mutex without bothering with interruptible handling,
I've figured I should be able to get away with this in a few more
places ...

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c

index d9fbbe1910710f748fb45bac0f8649d50083b70f..a135498a129819381f6790a34ab6762eaf328078 100644 (file)
@@ -163,11 +163,7 @@ int vmw_present_ioctl(struct drm_device *dev, void *data,
                goto out_no_copy;
        }
 
-       ret = mutex_lock_interruptible(&dev->mode_config.mutex);
-       if (unlikely(ret != 0)) {
-               ret = -ERESTARTSYS;
-               goto out_no_mode_mutex;
-       }
+       drm_modeset_lock_all(dev);
 
        obj = drm_mode_object_find(dev, arg->fb_id, DRM_MODE_OBJECT_FB);
        if (!obj) {
@@ -200,8 +196,7 @@ out_no_surface:
        ttm_read_unlock(&vmaster->lock);
 out_no_ttm_lock:
 out_no_fb:
-       mutex_unlock(&dev->mode_config.mutex);
-out_no_mode_mutex:
+       drm_modeset_unlock_all(dev);
 out_no_copy:
        kfree(clips);
 out_clips:
@@ -251,11 +246,7 @@ int vmw_present_readback_ioctl(struct drm_device *dev, void *data,
                goto out_no_copy;
        }
 
-       ret = mutex_lock_interruptible(&dev->mode_config.mutex);
-       if (unlikely(ret != 0)) {
-               ret = -ERESTARTSYS;
-               goto out_no_mode_mutex;
-       }
+       drm_modeset_lock_all(dev);
 
        obj = drm_mode_object_find(dev, arg->fb_id, DRM_MODE_OBJECT_FB);
        if (!obj) {
@@ -282,8 +273,7 @@ int vmw_present_readback_ioctl(struct drm_device *dev, void *data,
        ttm_read_unlock(&vmaster->lock);
 out_no_ttm_lock:
 out_no_fb:
-       mutex_unlock(&dev->mode_config.mutex);
-out_no_mode_mutex:
+       drm_modeset_unlock_all(dev);
 out_no_copy:
        kfree(clips);
 out_clips: