CVE-2026-89816

Summary

In the Linux kernel, the following vulnerability has been resolved:

drm: Fix drm_crtc_commit leak if signaled when PAGE_FLIP_EVENT 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 drm_atomic_helper_setup_commit() itself.

However, if the event is allocated in prepare_signaling(), it will also be set to NULL in complete_signaling(), which prevents drm_crtc_commit from being put in __drm_atomic_helper_crtc_destroy_state().

Dropping the reference when the event is set to NULL at complete_signaling() fixes the leak.

The leak can be reproduced by sending a signal to the thread using DRM_MODE_PAGE_FLIP_EVENT and using a sw_sync fence to cause the atomic ioctl to block at drm_atomic_helper_wait_for_fences(). It happened both with amdgpu and vkms.

Affected Software

VendorProductVersion RangeStatus
LinuxLinux24835e442f289813aa568d142a755672a740503c < c5517b71101f61a45144e3cf77a19626355272deaffected
LinuxLinux24835e442f289813aa568d142a755672a740503c < 866a04137dac7e82a3848851061ff7ed15c2847eaffected
LinuxLinux24835e442f289813aa568d142a755672a740503c < 6a6a7aae4681a20cd32789fea9a487aaafa0e7a3affected
LinuxLinux24835e442f289813aa568d142a755672a740503c < e2f27b5ed9084feb7bae9ef2bc80de37c92280b1affected
LinuxLinux24835e442f289813aa568d142a755672a740503c < ff73f5f43d032c3da3c534c517f661e8dfeb358aaffected
LinuxLinux24835e442f289813aa568d142a755672a740503c < 66b1b309886337745d395bbc158440ab196305ceaffected
LinuxLinux24835e442f289813aa568d142a755672a740503c < e6195b941fdc8d81fc431c9f25539cf6c6234b51affected
LinuxLinux24835e442f289813aa568d142a755672a740503c < 4d4be202165e832d74849b4a68e289a2a377039caffected
LinuxLinuxc75fe7899538890109aad7bbf92b2f304389e825affected
LinuxLinux2a3241044b1c4ecc13f73b7158881881fb7534a1affected
LinuxLinux4.9.19 < 4.10affected
LinuxLinux4.10.7 < 4.11affected
LinuxLinux4.11affected
LinuxLinux0 < 4.11unaffected
LinuxLinux5.10.270 <= 5.10.*unaffected
LinuxLinux5.15.221 <= 5.15.*unaffected
LinuxLinux6.1.188 <= 6.1.*unaffected
LinuxLinux6.6.157 <= 6.6.*unaffected
LinuxLinux6.12.110 <= 6.12.*unaffected
LinuxLinux6.18.51 <= 6.18.*unaffected
LinuxLinux7.2.5 <= 7.2.*unaffected
LinuxLinux7.3-rc2 <= *unaffected

Weaknesses

References