Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29e190e0 authored by Thomas Hellstrom's avatar Thomas Hellstrom Committed by Dave Airlie
Browse files

drm/ttm: Remove the CAP_SYS_ADMIN requirement for bo pinning



This breaks vmwgfx non-root EGL clients and is a remnant from the
TTM user-space interface. This test should be done in the driver.
Replace the remaining placement test with a BUG_ON, since triggering
it is a driver bug.

Signed-off-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent aa123268
Loading
Loading
Loading
Loading
+2 −28
Original line number Diff line number Diff line
@@ -1119,35 +1119,9 @@ EXPORT_SYMBOL(ttm_bo_validate);
int ttm_bo_check_placement(struct ttm_buffer_object *bo,
				struct ttm_placement *placement)
{
	int i;
	BUG_ON((placement->fpfn || placement->lpfn) &&
	       (bo->mem.num_pages > (placement->lpfn - placement->fpfn)));

	if (placement->fpfn || placement->lpfn) {
		if (bo->mem.num_pages > (placement->lpfn - placement->fpfn)) {
			printk(KERN_ERR TTM_PFX "Page number range to small "
				"Need %lu pages, range is [%u, %u]\n",
				bo->mem.num_pages, placement->fpfn,
				placement->lpfn);
			return -EINVAL;
		}
	}
	for (i = 0; i < placement->num_placement; i++) {
		if (!capable(CAP_SYS_ADMIN)) {
			if (placement->placement[i] & TTM_PL_FLAG_NO_EVICT) {
				printk(KERN_ERR TTM_PFX "Need to be root to "
					"modify NO_EVICT status.\n");
				return -EINVAL;
			}
		}
	}
	for (i = 0; i < placement->num_busy_placement; i++) {
		if (!capable(CAP_SYS_ADMIN)) {
			if (placement->busy_placement[i] & TTM_PL_FLAG_NO_EVICT) {
				printk(KERN_ERR TTM_PFX "Need to be root to "
					"modify NO_EVICT status.\n");
				return -EINVAL;
			}
		}
	}
	return 0;
}