CVE-2026-23357
Medium · 5.5CVSS
5.5
EPSS
0.1%
Published
Mar 25, 2026
CISA due date
—
Cloudanix analysis
A bug in the Linux kernel can freeze the entire system when certain CAN network chips are being set up if an error occurs at the wrong moment.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Race Condition
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Race condition in mcp251x_open error path causes deadlock: free_irq() is invoked while mpc_lock is held, allowing a pending interrupt handler to block indefinitely waiting for the same mutex.
Why it matters to the business
Systems using MCP251x CAN controllers may experience kernel hangs or forced reboots during device initialization under load or error conditions, leading to loss of availability for affected hardware and dependent applications.
How an attack unfolds
A local attacker triggers the error path inside mcp251x_open (for example by causing an open failure after the IRQ is requested) while an interrupt is already pending; the handler then waits for mpc_lock, producing a deadlock when free_irq attempts to synchronize with the handler.
How to fix it
Apply the upstream fix that sets priv->force_quit = 1 before releasing mpc_lock and moves the free_irq call to after the mutex is dropped; rebuild and deploy the corrected kernel on all affected systems.
How to confirm the fix worked
Inspect the mcp251x_open function in the driver source to confirm free_irq is invoked only after the mutex release and that force_quit is set on the error path; test device open/close sequences under interrupt load to verify absence of deadlock.
Typical attack path
- Local user or process initiates mcp251x device open
- Open enters error path after IRQ registration but before lock release
- Hardware interrupt fires and handler blocks on mpc_lock
- free_irq waits for handler completion, resulting in deadlock
How to detect it
Review kernel logs for repeated mcp251x or CAN subsystem entries around device open failures; correlate with system watchdog or hung-task reports indicating mutex contention in the driver.
What your security team should do
- Identify and prioritize kernel upgrades on all hosts exposing MCP251x CAN interfaces
- Monitor vendor or distribution advisories for backported patches
- Restrict local access to CAN device nodes until patches are deployed
The record
In the Linux kernel, the following vulnerability has been resolved: can: mcp251x: fix deadlock in error path of mcp251x_open The mcp251x_open() function call free_irq() in its error path with the mpc_lock mutex held. But if an interrupt already occurred the interrupt handler will be waiting for the mpc_lock and free_irq() will deadlock waiting for the handler to finish. This issue is similar to the one fixed in commit 7dd9c26bd6cf ("can: mcp251x: fix deadlock if an interrupt occurs during mcp251x_open") but for the error path. To solve this issue move the call to free_irq() after the lock is released. Setting `priv->force_quit = 1` beforehand ensure that the IRQ handler will exit right away once it acquired the lock.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-61854 VoiceSentinel is a real-time voice moderation system for Minecraft servers. CWE-667
- CVE-2026-118593 A flaw was found in Red Hat Enterprise Linux 9 kernel builds. CWE-667
- CVE-2026-106174 A improper locking vulnerability in Fortinet FortiOS 8.0.0, FortiOS 7.6.4 through 7.6.6… CWE-667
- CVE-2026-110803 VaadinService.requestEnd() in Vaadin Framework 8 locks the session and then reads the… CWE-667
- CVE-2026-111879 DBI versions before 1.656 for Perl hang on a later open of a DBD::DBM table because a… CWE-667
- CVE-2026-107674 IBM i 7.3, 7.4, 7.5, and 7.6 is vulnerable to a denial of service to Digital Certificate… CWE-667
- CVE-2026-98123 In the Linux kernel, the following vulnerability has been resolved: sctp: fix soft lockup… CWE-667
- CVE-2026-98094 In the Linux kernel, the following vulnerability has been resolved: staging: fbtft: make… CWE-667