CVE-2026-90336: serial: core: clear freed pointers on uart_register_driver() failure

Published Sep 17, 2026
·
Updated

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

serial: core: clear freed pointers on uartregisterdriver() failure

uartregisterdriver() leaves drv->state pointing to freed memory when ttyallocdriver() fails. If ttyregisterdriver() fails, drv->ttydriver 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 uartaddoneport().

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 uartunregisterdriver() already does.

Affected Software

1 affected component
Linux Linux kernel

Event History

Sep 17, 2026
CVE Published
via MITRE·04:08 PM
Data Sourced
via MITRE·04:08 PM
Description

Frequently Asked Questions

1

Under what conditions can this issue be triggered?

It requires uart_register_driver() to fail during driver registration, either because tty_alloc_driver() fails or because tty_register_driver() fails. A subsequent probe or rebind of a UART driver that treats drv->state as an already-registered flag can then use the stale freed state.

2

Which systems or drivers are most relevant for triage?

Systems using Linux kernel UART drivers are relevant where driver registration can fail and the driver may later be reprobed or rebound. The issue was found on QEMU's raspi1ap board by failing registration and binding the PL011 port again.

3

How can administrators determine whether they may have encountered the problem?

Look for a failed UART driver registration followed by a reprobe or rebind of the affected serial port driver. The vulnerable behavior involves drv->state or drv->tty_driver retaining pointers after their underlying objects have been freed.

4

What is the remediation?

Apply a kernel version containing the referenced fixes. The fix clears drv->state when tty_alloc_driver() fails and clears drv->tty_driver when tty_register_driver() fails, matching the cleanup performed by uart_unregister_driver().

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203