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

mailbox: qcom-cpucp: fix PREEMPT_RT self-deadlock in IRQ handler

qcom_cpucp_mbox_irq_fn() calls mbox_chan_received_data() while holding
chan->lock. Under PREEMPT_RT, spin_lock_irqsave() is converted to an
rt_spinlock (rtmutex-based), which tracks ownership and can sleep.

The callback chain triggered by mbox_chan_received_data() eventually
reaches mailbox_clear_channel() -> mbox_send_message() -> add_to_rbuf(),
which attempts to re-acquire the same chan->lock. Since rtmutex detects
the re-entrant lock attempt by the same owner, the thread blocks waiting
for a lock it already holds, causing a permanent deadlock.

This deadlock manifests as 'irq/N-apss_cpucp_mbox' stuck in D state
with the following call trace:
rt_spin_lock -> mbox_send_message -> mailbox_clear_channel ->
scmi_rx_callback -> mbox_chan_received_data [<- held chan->lock here]

Fix by saving chan->cl locally and clearing the HW interrupt register
inside the lock, then invoking mbox_chan_received_data() after releasing
the lock. This preserves the mutual exclusion for chan->cl access while
avoiding the lock re-entrancy that causes the PREEMPT_RT deadlock.
Published: 2026-09-17
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: Availability (deadlock in kernel IRQ handler)
Action: Patch
AI Analysis

Impact

The issue causes a self‑deadlock in the qcom_cpucp mailbox IRQ handler when PREEMPT_RT is enabled. While holding chan->lock, the handler calls mbox_chan_received_data() which eventually calls mbox_send_message() that attempts to re‑acquire the same lock. The rtmutex detects this re‑entrant acquisition and blocks the thread, leaving it permanently in the D state and preventing the IRQ handler from completing. This state can stall the kernel or the affected mailbox channel, effectively denying services that rely on that communication path.

Affected Systems

All Linux kernel builds that include the qcom_cpucp mailbox driver before the patch commit. The problem manifests on platforms where PREEMPT_RT is enabled and the 'irq/N-apss_cpucp_mbox' channel is active.

Risk and Exploitability

Based on the description, it is inferred that remote exploitation would require physical or firmware-level control to manipulate this interrupt, making external attacks unlikely. The deadlock is triggered by a hardware interrupt and requires the corresponding IRQ to fire. Remote exploitation would thus need access to the hardware or firmware level. The EPSS score is below 1% and the vulnerability is not listed in the CISA KEV catalog, indicating a low probability of widespread exploitation. Nonetheless, once triggered, the deadlock can lead to a local denial‑of‑service as the kernel thread remains stuck indefinitely.

Generated by OpenCVE AI on September 20, 2026 at 01:32 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply the kernel patch that moves mbox_chan_received_data() outside the lock (commit 3690aaa6d18f67875c3e7932f...); this directly removes the re‑entrancy that causes the deadlock.
  • Upgrade to a kernel release that incorporates the fix; any downstream distribution that has merged the commit provides protection.
  • If an upgrade is not possible, disable PREEMPT_RT scheduling on the affected system or unload the qcom_cpucp mailbox driver to prevent the deadlock pathway.

Generated by OpenCVE AI on September 20, 2026 at 01:32 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4817-1 linux-6.12 security update
Debian DSA Debian DSA DSA-6528-1 linux security update
History

Sun, 20 Sep 2026 02:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-368

Thu, 17 Sep 2026 16:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: mailbox: qcom-cpucp: fix PREEMPT_RT self-deadlock in IRQ handler qcom_cpucp_mbox_irq_fn() calls mbox_chan_received_data() while holding chan->lock. Under PREEMPT_RT, spin_lock_irqsave() is converted to an rt_spinlock (rtmutex-based), which tracks ownership and can sleep. The callback chain triggered by mbox_chan_received_data() eventually reaches mailbox_clear_channel() -> mbox_send_message() -> add_to_rbuf(), which attempts to re-acquire the same chan->lock. Since rtmutex detects the re-entrant lock attempt by the same owner, the thread blocks waiting for a lock it already holds, causing a permanent deadlock. This deadlock manifests as 'irq/N-apss_cpucp_mbox' stuck in D state with the following call trace: rt_spin_lock -> mbox_send_message -> mailbox_clear_channel -> scmi_rx_callback -> mbox_chan_received_data [<- held chan->lock here] Fix by saving chan->cl locally and clearing the HW interrupt register inside the lock, then invoking mbox_chan_received_data() after releasing the lock. This preserves the mutual exclusion for chan->cl access while avoiding the lock re-entrancy that causes the PREEMPT_RT deadlock.
Title mailbox: qcom-cpucp: fix PREEMPT_RT self-deadlock in IRQ handler
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-17T16:07:13.672Z

Reserved: 2026-09-11T19:38:34.792Z

Link: CVE-2026-90193

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-17T17:17:14.030

Modified: 2026-09-17T17:17:14.030

Link: CVE-2026-90193

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-20T01:45:17Z

Weaknesses
  • CWE-368

    Context Switching Race Condition