CVE-2026-89820: drm/amd/display: fix dc_lock leak on GPU reset error paths
In the Linux kernel, the following vulnerability has been resolved:
drm/amd/display: fix dclock leak on GPU reset error paths
On GPU reset, dmsuspend() takes dclock and leaves it for dmresume() to drop. If amdgpudmcommitzerostreams() or dmdmubhwinit() fails, the function returns with the lock still held. The matching resume path is then skipped, so every later dclock take hangs.
Release the cached DC state and unlock before returning the error.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Compensating control
If amdgpu_dm_commit_zero_streams() or dm_dmub_hw_init() fails, release the cached DC state and unlock dc_lock before returning the error, so later dc_lock acquisitions do not hang.
Event History
Frequently Asked Questions
What conditions are required to trigger the hang?
A GPU reset must occur, and either amdgpu_dm_commit_zero_streams() or dm_dmub_hw_init() must fail during the reset resume path. In that case, dc_lock remains held and subsequent attempts to acquire it hang.
What is the practical impact after the error path is reached?
The matching resume path is skipped, leaving dc_lock locked. Every later attempt to take dc_lock hangs, which can prevent further display operations from progressing.
What should be done if the issue is observed?
Apply a kernel version containing the referenced fix. The fix releases the cached DC state and unlocks dc_lock before returning from the affected error paths.