drm/amdkfd: Fix out-of-bounds write in kfd_event_page_set()
authorSunday Clement <Sunday.Clement@amd.com>
Mon, 2 Feb 2026 17:41:39 +0000 (12:41 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 5 Feb 2026 22:20:07 +0000 (17:20 -0500)
The kfd_event_page_set() function writes KFD_SIGNAL_EVENT_LIMIT * 8
bytes via memset without checking the buffer size parameter. This allows
unprivileged userspace to trigger an out-of bounds kernel memory write
by passing a small buffer, leading to  potential privilege
escalation.

Signed-off-by: Sunday Clement <Sunday.Clement@amd.com>
Reviewed-by: Alexander Deucher <Alexander.Deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/amdkfd/kfd_events.c

index 1ad312a..13416bf 100644 (file)
@@ -331,6 +331,12 @@ static int kfd_event_page_set(struct kfd_process *p, void *kernel_address,
        if (p->signal_page)
                return -EBUSY;
 
+       if (size < KFD_SIGNAL_EVENT_LIMIT * 8) {
+               pr_err("Event page size %llu is too small, need at least %lu bytes\n",
+                               size, (unsigned long)(KFD_SIGNAL_EVENT_LIMIT * 8));
+               return -EINVAL;
+       }
+
        page = kzalloc(sizeof(*page), GFP_KERNEL);
        if (!page)
                return -ENOMEM;