]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: validate user queue size constraints
authorJesse.Zhang <Jesse.Zhang@amd.com>
Wed, 28 Jan 2026 03:35:57 +0000 (11:35 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 29 Jan 2026 17:26:15 +0000 (12:26 -0500)
Add validation to ensure user queue sizes meet hardware requirements:
- Size must be a power of two for efficient ring buffer wrapping
- Size must be at least AMDGPU_GPU_PAGE_SIZE to prevent undersized allocations

This prevents invalid configurations that could lead to GPU faults or
unexpected behavior.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Jesse Zhang <jesse.zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c

index b0ebf19db10b790dced5002ae50ded11d9f69450..b700c2b9146541c30302698887c68fbffcae0d56 100644 (file)
@@ -932,6 +932,17 @@ static int amdgpu_userq_input_args_validate(struct drm_device *dev,
                        drm_file_err(filp, "invalidate userq queue va or size\n");
                        return -EINVAL;
                }
+
+               if (!is_power_of_2(args->in.queue_size)) {
+                       drm_file_err(filp, "Queue size must be a power of 2\n");
+                       return -EINVAL;
+               }
+
+               if (args->in.queue_size < AMDGPU_GPU_PAGE_SIZE) {
+                       drm_file_err(filp, "Queue size smaller than AMDGPU_GPU_PAGE_SIZE\n");
+                       return -EINVAL;
+               }
+
                if (!args->in.wptr_va || !args->in.rptr_va) {
                        drm_file_err(filp, "invalidate userq queue rptr or wptr\n");
                        return -EINVAL;