CVE-2026-89816: drm: Fix drm_crtc_commit leak if signaled when PAGE_FLIP_EVENT is used
In the Linux kernel, the following vulnerability has been resolved:
drm: Fix drmcrtccommit leak if signaled when PAGEFLIPEVENT is used
Commit 1c6ceeee6ebb ("drm/atomic: Fix memleak on ERESTARTSYS during non-blocking commits") fixed a very similar issue when the event was allocated by drmatomichelpersetupcommit() itself.
However, if the event is allocated in preparesignaling(), it will also be set to NULL in completesignaling(), which prevents drmcrtccommit from being put in drmatomichelpercrtcdestroystate().
Dropping the reference when the event is set to NULL at completesignaling() fixes the leak.
The leak can be reproduced by sending a signal to the thread using DRMMODEPAGEFLIPEVENT and using a swsync fence to cause the atomic ioctl to block at drmatomichelperwaitforfences(). It happened both with amdgpu and vkms.
Affected Software
Event History
Frequently Asked Questions
What conditions are required to trigger the leak?
A thread must use DRM_MODE_PAGE_FLIP_EVENT and be interrupted by a signal while an atomic ioctl is blocked in drm_atomic_helper_wait_for_fences(). The described reproduction uses a sw_sync fence to create that blocking condition.
Which DRM drivers were observed to be affected?
The leak was reproduced with both amdgpu and vkms. The provided information does not identify other affected or unaffected DRM drivers.
What is the impact if the issue is triggered?
The affected drm_crtc_commit reference is not released, causing a memory leak. The data provided does not quantify the amount of memory leaked or describe further impacts.