CVE-2026-89599
nicheUninitialized mutex race in Linux kernel omapfb DSI-CM panel driver
The Linux kernel's omapfb DSI-CM panel driver (panel-dsi-cm) registers its display via omapdss_register_display() before initializing the ddata->lock mutex inside dsicm_probe(), publishing callbacks that can grab a lock that is not yet valid. Once the display is published, another in-kernel consumer racing during probe can invoke one of these callbacks and trigger use of the uninitialized mutex, causing undefined behavior such as memory corruption or a crash. The flaw is local in nature (AV:L per the CVSS 3.1 vector, scored 8.4 with high C/I/A impact), and an attacker with local access to a vulnerable system could at minimum disrupt the display subsystem and potentially corrupt kernel state. Only systems actually running this legacy driver are affected: embedded boards built on Texas Instruments OMAP SoCs with DSI command-mode panels, such as N900/BeagleBoard/PandaBoard-class hardware — ordinary servers, desktops, and modern phones on other SoCs are unaffected. No public proof of concept exists and no exploitation has been observed (the CVE is not in the CISA KEV).
What to do: Update to a kernel release or vendor backport that includes the fix (the mutex is now initialized before omapdss_register_display()); no fixed version number was specified in the advisory. Check whether the driver is even in play — verify CONFIG_FB_OMAP* options in the kernel config and whether omapfb/panel-dsi-cm modules are loaded. If the hardware or driver is unused, disable or blacklist the panel-dsi-cm driver, and restrict local untrusted access to any affected OMAP-based embedded devices.
| Linux kernel (kernel.org) Linux kernel, fbdev omapfb panel-dsi-cm display driver | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
In the Linux kernel, the following vulnerability has been resolved: fbdev: omapfb: panel-dsi-cm: initialize lock before registering display dsicm_probe() registers the display before initializing ddata->lock. Once omapdss_register_display() publishes the display, another consumer can reach a dsicm callback that takes this mutex while it is still uninitialized. Initialize the mutex before registering the display so the published callbacks always see a valid lock.
- Vector
- CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
In the news0 stories
No ingested article mentions this CVE yet.