hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
....@@ -2229,14 +2229,14 @@
22292229 uint64_t eaddr;
22302230
22312231 /* validate the parameters */
2232
- if (saddr & ~PAGE_MASK || offset & ~PAGE_MASK ||
2233
- size == 0 || size & ~PAGE_MASK)
2232
+ if (saddr & ~PAGE_MASK || offset & ~PAGE_MASK || size & ~PAGE_MASK)
2233
+ return -EINVAL;
2234
+ if (saddr + size <= saddr || offset + size <= offset)
22342235 return -EINVAL;
22352236
22362237 /* make sure object fit at this offset */
22372238 eaddr = saddr + size - 1;
2238
- if (saddr >= eaddr ||
2239
- (bo && offset + size > amdgpu_bo_size(bo)) ||
2239
+ if ((bo && offset + size > amdgpu_bo_size(bo)) ||
22402240 (eaddr >= adev->vm_manager.max_pfn << AMDGPU_GPU_PAGE_SHIFT))
22412241 return -EINVAL;
22422242
....@@ -2295,14 +2295,14 @@
22952295 int r;
22962296
22972297 /* validate the parameters */
2298
- if (saddr & ~PAGE_MASK || offset & ~PAGE_MASK ||
2299
- size == 0 || size & ~PAGE_MASK)
2298
+ if (saddr & ~PAGE_MASK || offset & ~PAGE_MASK || size & ~PAGE_MASK)
2299
+ return -EINVAL;
2300
+ if (saddr + size <= saddr || offset + size <= offset)
23002301 return -EINVAL;
23012302
23022303 /* make sure object fit at this offset */
23032304 eaddr = saddr + size - 1;
2304
- if (saddr >= eaddr ||
2305
- (bo && offset + size > amdgpu_bo_size(bo)) ||
2305
+ if ((bo && offset + size > amdgpu_bo_size(bo)) ||
23062306 (eaddr >= adev->vm_manager.max_pfn << AMDGPU_GPU_PAGE_SHIFT))
23072307 return -EINVAL;
23082308
....@@ -3252,6 +3252,10 @@
32523252 long timeout = msecs_to_jiffies(2000);
32533253 int r;
32543254
3255
+ /* No valid flags defined yet */
3256
+ if (args->in.flags)
3257
+ return -EINVAL;
3258
+
32553259 switch (args->in.op) {
32563260 case AMDGPU_VM_OP_RESERVE_VMID:
32573261 /* We only have requirement to reserve vmid from gfxhub */