Dont allow !sysadmin clients to alter the memory type of

NO_EVICT buffers.
main
Thomas Hellstrom 2008-03-12 10:19:36 +01:00
parent 88be276a42
commit 5bebcd7a0b
1 changed files with 14 additions and 0 deletions

View File

@ -979,6 +979,20 @@ static int drm_bo_modify_proposed_flags (struct drm_buffer_object *bo,
return -EPERM;
}
if (likely(new_mask & DRM_BO_MASK_MEM) &&
(bo->mem.flags & DRM_BO_FLAG_NO_EVICT) &&
!DRM_SUSER(DRM_CURPROC)) {
if (likely(bo->mem.flags & new_flags & new_mask &
DRM_BO_MASK_MEM))
new_flags = (new_flags & ~DRM_BO_MASK_MEM) |
(bo->mem.flags & DRM_BO_MASK_MEM);
else {
DRM_ERROR("Incompatible memory type specification "
"for NO_EVICT buffer.\n");
return -EPERM;
}
}
if ((new_flags & DRM_BO_FLAG_NO_MOVE)) {
DRM_ERROR("DRM_BO_FLAG_NO_MOVE is not properly implemented yet.\n");
return -EPERM;