drm: Fix drm_crtc_commit leak if signaled when PAGE_FLIP_EVENT is used
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 4.10, 4.11, 5.10.270, 5.15.221, 6.1.188, and 4 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
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.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 24835e442f289813aa568d142a755672a740503c · fixed in c5517b71101f61a45144e3cf77a19626355272de; From 24835e442f289813aa568d142a755672a740503c · fixed in 866a04137dac7e82a3848851061ff7ed15c2847e; From 24835e442f289813aa568d142a755672a740503c · fixed in 6a6a7aae4681a20cd32789fea9a487aaafa0e7a3; From 24835e442f289813aa568d142a755672a740503c · fixed in e2f27b5ed9084feb7bae9ef2bc80de37c92280b1; From 24835e442f289813aa568d142a755672a740503c · fixed in ff73f5f43d032c3da3c534c517f661e8dfeb358a; From 24835e442f289813aa568d142a755672a740503c · fixed in 66b1b309886337745d395bbc158440ab196305ce; From 24835e442f289813aa568d142a755672a740503c · fixed in e6195b941fdc8d81fc431c9f25539cf6c6234b51; From 24835e442f289813aa568d142a755672a740503c · fixed in 4d4be202165e832d74849b4a68e289a2a377039c; From 4.9.19 · fixed in 4.10; From 4.10.7 · fixed in 4.11
- Linux Linux
4.11
- KernelLinux
From 4.11.0 · fixed in 5.10.270; From 5.11.0 · fixed in 5.15.221; From 5.16.0 · fixed in 6.1.188; From 6.2.0 · fixed in 6.6.157; From 6.7.0 · fixed in 6.12.110; From 6.13.0 · fixed in 6.18.51; From 6.19.0 · fixed in 7.2.5
References 8
git.kernel.org
- stable/c/c5517b71101f61a45144e3cf77a19626355272de
- stable/c/866a04137dac7e82a3848851061ff7ed15c2847e
- stable/c/6a6a7aae4681a20cd32789fea9a487aaafa0e7a3
- stable/c/e2f27b5ed9084feb7bae9ef2bc80de37c92280b1
- stable/c/ff73f5f43d032c3da3c534c517f661e8dfeb358a
- stable/c/66b1b309886337745d395bbc158440ab196305ce
- stable/c/e6195b941fdc8d81fc431c9f25539cf6c6234b51
- stable/c/4d4be202165e832d74849b4a68e289a2a377039c