mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-18 06:33:43 -04:00
drm/vmwgfx: use drm_modeset_lock_all
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>
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user