aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
diff options
context:
space:
mode:
authorThomas Hellstrom <thellstrom@vmware.com>2012-11-21 10:04:18 -0500
committerDave Airlie <airlied@redhat.com>2012-11-28 05:09:08 -0500
commitd08a9b9cd82f668a5437c23e59063387ca3ecec5 (patch)
treeba4f33c31d5cf530c244b2ec0fa8bf5865677563 /drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
parent219e81536c8776b30ccf3262c1ceaeaddf7a231a (diff)
drm/vmwgfx: Tighten the security around buffer maps
Make sure that other DRM clients can't map the contents of non-shareable buffer objects. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Brian Paul <brianp@vmware.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/vmwgfx/vmwgfx_resource.c')
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_resource.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
index 88b6f921ee94..0def4ff5b621 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
@@ -458,6 +458,26 @@ out_no_base_object:
458 return ret; 458 return ret;
459} 459}
460 460
461/**
462 * vmw_user_dmabuf_verify_access - verify access permissions on this
463 * buffer object.
464 *
465 * @bo: Pointer to the buffer object being accessed
466 * @tfile: Identifying the caller.
467 */
468int vmw_user_dmabuf_verify_access(struct ttm_buffer_object *bo,
469 struct ttm_object_file *tfile)
470{
471 struct vmw_user_dma_buffer *vmw_user_bo;
472
473 if (unlikely(bo->destroy != vmw_user_dmabuf_destroy))
474 return -EPERM;
475
476 vmw_user_bo = vmw_user_dma_buffer(bo);
477 return (vmw_user_bo->base.tfile == tfile ||
478 vmw_user_bo->base.shareable) ? 0 : -EPERM;
479}
480
461int vmw_dmabuf_alloc_ioctl(struct drm_device *dev, void *data, 481int vmw_dmabuf_alloc_ioctl(struct drm_device *dev, void *data,
462 struct drm_file *file_priv) 482 struct drm_file *file_priv)
463{ 483{