]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdkfd: Check bounds in allocate_event_notification_slot
authorDavid Francis <David.Francis@amd.com>
Thu, 21 May 2026 13:18:59 +0000 (09:18 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 8 Jul 2026 20:45:48 +0000 (16:45 -0400)
The valid event ids go from 0 to KFD_SIGNAL_EVENT_LIMIT

allocate_event_notification_slot has an option to specify
an event id to allocate at, used by CRIU. We weren't checking
the bounds on that value.

Check them.

v2: Lower bounds check is unecessary because of idr_alloc
already rejecting negative numbers. Upper bounds check should
be KFD_SIGNAL_EVENT_LIMIT since the signal mode mappings might
not yet exist

Signed-off-by: David Francis <David.Francis@amd.com>
Reviewed-by: David Yat Sin <david.yatsin@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 6853f1f6cbbeb3f53ebbbd7286536aeb2c5d5f50)
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/amdkfd/kfd_events.c

index 8cb43010ab1c78df41a0e9c76b4feb61de7d4ea5..2e97da597b3da62bdd44e901f9a7978c2fcd956e 100644 (file)
@@ -107,6 +107,9 @@ static int allocate_event_notification_slot(struct kfd_process *p,
        }
 
        if (restore_id) {
+               if (*restore_id >= KFD_SIGNAL_EVENT_LIMIT)
+                       return -EINVAL;
+
                id = idr_alloc(&p->event_idr, ev, *restore_id, *restore_id + 1,
                                GFP_KERNEL);
        } else {