CVE Catalog

CVE-2026-90336

Unknown
Published: Translated: NVD NIST

Summary

In the Linux kernel's uart_register_driver(), on failure of tty_alloc_driver(), drv->state remains pointing to freed memory, and on failure of tty_register_driver(), drv->tty_driver also retains a stale pointer. Drivers using drv->state as an 'already registered' flag may skip registration and pass freed state to uart_add_one_port().

Risk Assessment

The risk includes use-after-free during re-registration attempts, potentially leading to system crashes or unpredictable behavior of serial drivers.

Recommendation

Apply the patch that clears drv->state and drv->tty_driver on error paths, and update the kernel to a version with the fix.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: serial: core: clear freed pointers on uart_register_driver() failure uart_register_driver() leaves drv->state pointing to freed memory when tty_alloc_driver() fails. If tty_register_driver() fails, drv->tty_driver also retains a pointer after its reference is dropped. Drivers that use drv->state as an "already registered" flag can then skip registration on the next probe and pass the freed state to uart_add_one_port(). This issue was found with failslab on QEMU's raspi1ap board by failing registration and binding the PL011 port again. Clear both pointers on their failure paths, as uart_unregister_driver() already does.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS