CVE-2022-50173 in Linux
Summary
by MITRE • 06/18/2025
In the Linux kernel, the following vulnerability has been resolved:
drm/msm/mdp5: Fix global state lock backoff
We need to grab the lock after the early return for !hwpipe case. Otherwise, we could have hit contention yet still returned 0.
Fixes an issue that the new CONFIG_DRM_DEBUG_MODESET_LOCK stuff flagged in CI:
WARNING: CPU: 0 PID: 282 at drivers/gpu/drm/drm_modeset_lock.c:296 drm_modeset_lock+0xf8/0x154 Modules linked in: CPU: 0 PID: 282 Comm: kms_cursor_lega Tainted: G W 5.19.0-rc2-15930-g875cc8bc536a #1 Hardware name: Qualcomm Technologies, Inc. DB820c (DT) pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : drm_modeset_lock+0xf8/0x154 lr : drm_atomic_get_private_obj_state+0x84/0x170 sp : ffff80000cfab6a0 x29: ffff80000cfab6a0 x28: 0000000000000000 x27: ffff000083bc4d00 x26: 0000000000000038 x25: 0000000000000000 x24: ffff80000957ca58 x23: 0000000000000000 x22: ffff000081ace080 x21: 0000000000000001 x20: ffff000081acec18 x19: ffff80000cfabb80 x18: 0000000000000038 x17: 0000000000000000 x16: 0000000000000000 x15: fffffffffffea0d0 x14: 0000000000000000 x13: 284e4f5f4e524157 x12: 5f534b434f4c5f47 x11: ffff80000a386aa8 x10: 0000000000000029 x9 : ffff80000cfab610 x8 : 0000000000000029 x7 : 0000000000000014 x6 : 0000000000000000 x5 : 0000000000000001 x4 : ffff8000081ad904 x3 : 0000000000000029 x2 : ffff0000801db4c0 x1 : ffff80000cfabb80 x0 : ffff000081aceb58 Call trace: drm_modeset_lock+0xf8/0x154 drm_atomic_get_private_obj_state+0x84/0x170 mdp5_get_global_state+0x54/0x6c mdp5_pipe_release+0x2c/0xd4 mdp5_plane_atomic_check+0x2ec/0x414 drm_atomic_helper_check_planes+0xd8/0x210 drm_atomic_helper_check+0x54/0xb0 ... ---[ end trace 0000000000000000 ]---
drm_modeset_lock attempting to lock a contended lock without backoff: drm_modeset_lock+0x148/0x154 mdp5_get_global_state+0x30/0x6c mdp5_pipe_release+0x2c/0xd4 mdp5_plane_atomic_check+0x290/0x414 drm_atomic_helper_check_planes+0xd8/0x210 drm_atomic_helper_check+0x54/0xb0 drm_atomic_check_only+0x4b0/0x8f4 drm_atomic_commit+0x68/0xe0
Patchwork: https://patchwork.freedesktop.org/patch/492701/
Once again VulDB remains the best source for vulnerability data.
Analysis
by VulDB Data Team • 12/01/2025
The vulnerability CVE-2022-50173 affects the Linux kernel's graphics subsystem, specifically within the display subsystem's multi-display pipeline driver known as drm/msm/mdp5. This issue stems from improper lock management during global state operations, creating a race condition that can lead to inconsistent locking behavior and potential system instability. The problem manifests when the kernel attempts to acquire a modeset lock but fails to properly handle early returns in certain code paths, particularly when dealing with hardware pipe states. The vulnerability was identified through the CONFIG_DRM_DEBUG_MODESET_LOCK configuration option, which serves as a diagnostic mechanism to catch improper locking patterns that could lead to deadlocks or data corruption in concurrent environments.
The technical flaw occurs in the mdp5_get_global_state function where the code path fails to acquire the necessary global state lock after an early return condition for the !hwpipe case. This creates a scenario where the system can return success (0) while still holding a contested lock, violating fundamental locking principles and potentially causing deadlocks in subsequent operations. The stack trace reveals the problematic call sequence starting from drm_modeset_lock through various atomic helper functions, ultimately reaching mdp5_pipe_release and mdp5_plane_atomic_check, where the lock contention occurs without proper backoff mechanisms. This pattern directly violates the principles outlined in CWE-362, which addresses concurrent execution issues related to race conditions, and aligns with ATT&CK technique T1499.001 for resource exhaustion through improper locking.
The operational impact of this vulnerability extends beyond simple performance degradation to potentially causing system crashes or unstable graphics rendering in embedded systems using Qualcomm's MSM architecture. Systems utilizing the drm/msm/mdp5 driver, particularly those running on devices such as the Qualcomm Technologies DB820c platform, face risks of display subsystem failures during concurrent atomic operations. The issue becomes particularly critical during high-frequency display updates or when multiple graphics operations occur simultaneously, as the improper lock handling can lead to cascading failures in the display management subsystem. The vulnerability affects the atomic commit operations that are fundamental to modern graphics drivers, making it a significant concern for embedded systems and mobile devices where graphics performance and stability are paramount.
Mitigation strategies for this vulnerability require applying the official kernel patch that ensures proper lock acquisition after early returns in the global state management code. System administrators and device manufacturers should prioritize updating their kernel versions to include this fix, particularly in production environments where display stability is critical. The patch specifically addresses the missing lock acquisition by ensuring that the global state lock is properly obtained even when early return conditions are met, preventing the scenario where a function can return success while still holding contested locks. Additionally, organizations should implement monitoring for the CONFIG_DRM_DEBUG_MODESET_LOCK configuration option to detect similar issues in their custom kernel builds, as this diagnostic feature serves as an early warning system for improper locking patterns that could lead to more severe system failures. The fix aligns with security best practices for kernel development and follows established protocols for preventing race conditions in concurrent systems, as recommended by the Linux kernel security community and security standards frameworks.