|
@@ -171,8 +171,6 @@ int vmw_present_ioctl(struct drm_device *dev, void *data,
|
|
|
ret = -EINVAL;
|
|
|
goto out_no_fb;
|
|
|
}
|
|
|
- /* fb is protect by the mode_config lock, so drop the ref immediately */
|
|
|
- drm_framebuffer_unreference(fb);
|
|
|
vfb = vmw_framebuffer_to_vfb(fb);
|
|
|
|
|
|
ret = ttm_read_lock(&vmaster->lock, true);
|
|
@@ -197,6 +195,7 @@ int vmw_present_ioctl(struct drm_device *dev, void *data,
|
|
|
out_no_surface:
|
|
|
ttm_read_unlock(&vmaster->lock);
|
|
|
out_no_ttm_lock:
|
|
|
+ drm_framebuffer_unreference(fb);
|
|
|
out_no_fb:
|
|
|
drm_modeset_unlock_all(dev);
|
|
|
out_no_copy:
|
|
@@ -256,14 +255,12 @@ int vmw_present_readback_ioctl(struct drm_device *dev, void *data,
|
|
|
ret = -EINVAL;
|
|
|
goto out_no_fb;
|
|
|
}
|
|
|
- /* fb is protect by the mode_config lock, so drop the ref immediately */
|
|
|
- drm_framebuffer_unreference(fb);
|
|
|
|
|
|
vfb = vmw_framebuffer_to_vfb(fb);
|
|
|
if (!vfb->dmabuf) {
|
|
|
DRM_ERROR("Framebuffer not dmabuf backed.\n");
|
|
|
ret = -EINVAL;
|
|
|
- goto out_no_fb;
|
|
|
+ goto out_no_ttm_lock;
|
|
|
}
|
|
|
|
|
|
ret = ttm_read_lock(&vmaster->lock, true);
|
|
@@ -276,6 +273,7 @@ int vmw_present_readback_ioctl(struct drm_device *dev, void *data,
|
|
|
|
|
|
ttm_read_unlock(&vmaster->lock);
|
|
|
out_no_ttm_lock:
|
|
|
+ drm_framebuffer_unreference(fb);
|
|
|
out_no_fb:
|
|
|
drm_modeset_unlock_all(dev);
|
|
|
out_no_copy:
|