Linux: tty: serial: 8250: protect against NULL uart->port.dev in register
What fixes it
- 68059b6e9f7292714286e2b0f5185ed2a43fccc5LinuxCVE List
- 9c78f89cf2fbae18b14c78bf172ca15d832aff15LinuxCVE List
- 5cbab666721d974bfe033a12045d808936deaefdLinuxCVE List
- 941c9f84c9b6310f7aaa1c8c785dcc634ee33050LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
tty: serial: 8250: protect against NULL uart->port.dev in register
serial8250_register_8250_port() conditionally copies uart->port.dev from up->port.dev only when up->port.dev is non-NULL:
if (up->port.dev) { uart->port.dev = up->port.dev; ... }
So if both the existing uart slot and up have a NULL ->dev, uart->port.dev remains NULL. The very next ACPI companion check then dereferences it unconditionally:
if (!has_acpi_companion(uart->port.dev)) {
has_acpi_companion() reads dev->fwnode without a NULL guard (include/linux/acpi.h), so this NULL-derefs the kernel for the remaining no-dev case rather than just skipping the mctrl_gpio_init() initialisation as intended.
smatch flags the inconsistency:
drivers/tty/serial/8250/8250_core.c:767 serial8250_register_8250_port() error: 'uart->port.dev' could be null (see line 719)
Guard the call with a NULL check so register continues to work for callers that legitimately have no parent device (legacy non-OF/non-ACPI registrations).
No functional change for callers that pass a non-NULL ->dev.
Text from CVE List
Affected versions 10
- Linuxaffected: 4a96895f74c9633b51427fd080ab70fa62b65bc4 before 68059b6e9f7292714286e2b0f5185ed2a43fccc5CVE List
- Linuxaffected: 4a96895f74c9633b51427fd080ab70fa62b65bc4 before 9c78f89cf2fbae18b14c78bf172ca15d832aff15CVE List
- Linuxaffected: 4a96895f74c9633b51427fd080ab70fa62b65bc4 before 5cbab666721d974bfe033a12045d808936deaefdCVE List
- Linuxaffected: 4a96895f74c9633b51427fd080ab70fa62b65bc4 before 941c9f84c9b6310f7aaa1c8c785dcc634ee33050CVE List
- Linuxaffected: 5.3CVE List
- Linuxunaffected: all versions before 5.3CVE List
- Linuxunaffected: 6.6.160 through 6.6.*CVE List
- Linuxunaffected: 6.12.114 through 6.12.*CVE List
- Linuxunaffected: 6.18.53 through 6.18.*CVE List
- Linuxunaffected: 7.2CVE List
References 4
- git.kernel.org/stable/c/68059b6e9f7292714286e2b0f5185ed2a43fccc5Referencevia CVE List
- git.kernel.org/stable/c/9c78f89cf2fbae18b14c78bf172ca15d832aff15Referencevia CVE List
- git.kernel.org/stable/c/5cbab666721d974bfe033a12045d808936deaefdReferencevia CVE List
- git.kernel.org/stable/c/941c9f84c9b6310f7aaa1c8c785dcc634ee33050Referencevia CVE List