drm/nouveau: make use of drm_gpuvm_range_valid()
authorDanilo Krummrich <dakr@redhat.com>
Wed, 8 Nov 2023 00:12:34 +0000 (01:12 +0100)
committerDanilo Krummrich <dakr@redhat.com>
Mon, 13 Nov 2023 17:18:00 +0000 (18:18 +0100)
Use drm_gpuvm_range_valid() in order to validate userspace requests.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231108001259.15123-5-dakr@redhat.com
drivers/gpu/drm/nouveau/nouveau_uvmm.c
drivers/gpu/drm/nouveau/nouveau_uvmm.h

index aaf5d28..641a911 100644 (file)
@@ -929,25 +929,13 @@ nouveau_uvmm_sm_unmap_cleanup(struct nouveau_uvmm *uvmm,
 static int
 nouveau_uvmm_validate_range(struct nouveau_uvmm *uvmm, u64 addr, u64 range)
 {
-       u64 end = addr + range;
-       u64 kernel_managed_end = uvmm->kernel_managed_addr +
-                                uvmm->kernel_managed_size;
-
        if (addr & ~PAGE_MASK)
                return -EINVAL;
 
        if (range & ~PAGE_MASK)
                return -EINVAL;
 
-       if (end <= addr)
-               return -EINVAL;
-
-       if (addr < NOUVEAU_VA_SPACE_START ||
-           end > NOUVEAU_VA_SPACE_END)
-               return -EINVAL;
-
-       if (addr < kernel_managed_end &&
-           end > uvmm->kernel_managed_addr)
+       if (!drm_gpuvm_range_valid(&uvmm->base, addr, range))
                return -EINVAL;
 
        return 0;
@@ -1834,9 +1822,6 @@ nouveau_uvmm_init(struct nouveau_uvmm *uvmm, struct nouveau_cli *cli,
                goto out_unlock;
        }
 
-       uvmm->kernel_managed_addr = kernel_managed_addr;
-       uvmm->kernel_managed_size = kernel_managed_size;
-
        drm_gpuvm_init(&uvmm->base, cli->name, drm,
                       NOUVEAU_VA_SPACE_START,
                       NOUVEAU_VA_SPACE_END,
index a308c59..06a0c36 100644 (file)
@@ -14,9 +14,6 @@ struct nouveau_uvmm {
        struct mutex mutex;
        struct dma_resv resv;
 
-       u64 kernel_managed_addr;
-       u64 kernel_managed_size;
-
        bool disabled;
 };