CVE-2026-53331

slimbus: qcom-ngd-ctrl: Avoid ABBA on tx_lock/ctrl->lock

MEDIUM
5.5
CVSS Score
Published: July 1, 2026 at 01:32 PM UTC
Updated: July 23, 2026 at 09:51 PM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.5
Exploit prediction
EPSS 0.1%

Description

In the Linux kernel, the following vulnerability has been resolved: slimbus: qcom-ngd-ctrl: Avoid ABBA on tx_lock/ctrl->lock During the SSR/PDR down notification the tx_lock is taken with the intent to provide synchronization with active DMA transfers. But during this period qcom_slim_ngd_down() is invoked, which ends up in slim_report_absent(), which takes the slim_controller lock. In multiple other codepaths these two locks are taken in the opposite order (i.e. slim_controller then tx_lock). The result is a lockdep splat, and a possible deadlock: rprocctl/449 is trying to acquire lock: ffff00009793e620 (&ctrl->lock){+.+.}-{4:4}, at: slim_report_absent (drivers/slimbus/core.c:322) slimbus but task is already holding lock: ffff00009793fb50 (&ctrl->tx_lock){+.+.}-{4:4}, at: qcom_slim_ngd_ssr_pdr_notify (drivers/slimbus/qcom-ngd-ctrl.c:1475) slim_qcom_ngd_ctrl which lock already depends on the new lock. Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&ctrl->tx_lock); lock(&ctrl->lock); lock(&ctrl->tx_lock); lock(&ctrl->lock); The assumption is that the comment refers to the desire to not call qcom_slim_ngd_exit_dma() while we have an ongoing DMA TX transaction. But any such transaction is initiated and completed within a single qcom_slim_ngd_xfer_msg(). Prior to calling qcom_slim_ngd_exit_dma() the slim_controller is torn down, all child devices are notified that the slimbus is gone and the child devices are removed. Stop taking the tx_lock in qcom_slim_ngd_ssr_pdr_notify() to avoid the deadlock.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

5.11 ≤ v < 5.15.2105.11 ≤ v < 6.1.1765.11 ≤ v < 6.12.945.11 ≤ v < 6.18.365.11 ≤ v < 6.6.1435.11 ≤ v < 7.0.135.11 ≤ v < 7.15.16 ≤ v < 6.1.1766.13 ≤ v < 6.18.366.19 ≤ v < 7.0.136.2 ≤ v < 6.6.1436.7 ≤ v < 6.12.947.1 rc17.1 rc27.1 rc37.1 rc47.1 rc57.1 rc67.1 rc7a899d324863a3d15ce0eea513884e1b73a758c58
Vendor states this is fixed in 3d1561537237c6cc1db76155183d8bbdac2339f0 (fixed)
Vendor states this is fixed in 55f2ea9ff83cc27a85526b14bc9b32f96a08d6ec (fixed)
Vendor states this is fixed in 9708eb50fd7343145b422be852f890212155d845 (fixed)
Vendor states this is fixed in 9f0d45d509b434c54da10e01f4ef8086e4583401 (fixed)
Vendor states this is fixed in aad4337a21b9ad3ae8d668fa8678d05e26ecbaa8 (fixed)
Vendor states this is fixed in d54a221b0f3cd9e1f03f18104be34e02a8258fae (fixed)
Vendor states this is fixed in dc4d5c57e012c2c669793deb1515a57bbc6bf5dd (fixed)
Vendor states this is fixed in 5.11 (unaffected)
Vendor states this is fixed in 5.15.210 (unaffected)
Vendor states this is fixed in 6.1.176 (unaffected)
Vendor states this is fixed in 6.12.94 (unaffected)
Vendor states this is fixed in 6.18.36 (unaffected)
Vendor states this is fixed in 6.6.143 (unaffected)
Vendor states this is fixed in 7.0.13 (unaffected)
Vendor states this is fixed in 7.1 (unaffected)

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusANALYZED
CWE
NVD-CWE-noinfo

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card