summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSunday Clement <Sunday.Clement@amd.com>2026-05-19 10:02:30 -0400
committerAlex Deucher <alexander.deucher@amd.com>2026-06-04 15:25:39 -0400
commit39eb6da7acee8d0cc12a8959235b590f295d7b4c (patch)
tree6cc9e185e0e90271d8a837c5d3848c4dfcc6ee67
parent59720bfd8c6dbebeb8d5a7ab64241b007efd9213 (diff)
downloadlinux-39eb6da7acee8d0cc12a8959235b590f295d7b4c.tar.gz
linux-39eb6da7acee8d0cc12a8959235b590f295d7b4c.zip
drm/amdkfd: Add bounds check for AMDKFD_IOC_WAIT_EVENTS
The kfd_wait_on_events ioctl passes a user-supplied num_events parameter directly to alloc_event_waiters() which calls kcalloc() without validation. This allows unprivileged users with /dev/kfd access to trigger large kernel memory allocations, potentially causing memory exhaustion and denial of service via the OOM killer. Add a check to reject num_events values exceeding KFD_SIGNAL_EVENT_LIMIT (4096), which is the maximum number of events a single process can create. Signed-off-by: Sunday Clement <Sunday.Clement@amd.com> Reviewed-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_events.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
index a11c4ab3aafd..81900b49d9d5 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
@@ -800,6 +800,8 @@ static struct kfd_event_waiter *alloc_event_waiters(uint32_t num_events)
struct kfd_event_waiter *event_waiters;
uint32_t i;
+ if (num_events > KFD_SIGNAL_EVENT_LIMIT)
+ return NULL;
event_waiters = kzalloc_objs(struct kfd_event_waiter, num_events);
if (!event_waiters)
return NULL;