CVE-2026-23207: spi: tegra210-quad: Protect curr_xfer check in IRQ handler
In the Linux kernel, the following vulnerability has been resolved:
spi: tegra210-quad: Protect currxfer check in IRQ handler
Now that all other accesses to currxfer are done under the lock, protect the currxfer NULL check in tegraqspiisrthread() with the spinlock. Without this protection, the following race can occur:
CPU0 (ISR thread) CPU1 (timeout path) ---------------- ------------------- if (!tqspi->currxfer) // sees non-NULL spinlock() tqspi->currxfer = NULL spinunlock() handlexfer() spinlock() t = tqspi->currxfer // NULL! ... t->len ... // NULL dereference!
With this patch, all currxfer accesses are now properly synchronized.
Although all accesses to currxfer are done under the lock, in tegraqspiisrthread() it checks for NULL, releases the lock and reacquires it later in handlecpubasedxfer()/handledmabasedxfer(). There is a potential for an update in between, which could cause a NULL pointer dereference.
To handle this, add a NULL check inside the handlers after acquiring the lock. This ensures that if the timeout path has already cleared currxfer, the handler will safely return without dereferencing the NULL pointer.
Affected Software
Remediation
Event History
Frequently Asked Questions
What is the severity of CVE-2026-23207?
CVE-2026-23207 is classified with a high severity due to potential denial of service risks within the Linux kernel.
How do I fix CVE-2026-23207?
To fix CVE-2026-23207, upgrade to the latest patched version of the Linux kernel that addresses this vulnerability.
What systems are affected by CVE-2026-23207?
CVE-2026-23207 affects the Linux kernel, specifically the tegra210-quad SPI driver.
What is the nature of the vulnerability in CVE-2026-23207?
CVE-2026-23207 involves a race condition due to the checking of a NULL pointer in the IRQ handler that could lead to inconsistent state.
Can CVE-2026-23207 lead to data leakage?
CVE-2026-23207 primarily presents a denial of service risk rather than data leakage, as it involves improper handling of a variable in interrupts.