VYPR
Unrated severityNVD Advisory· Published Dec 30, 2025· Updated Apr 15, 2026

CVE-2023-54220

CVE-2023-54220

Description

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

serial: 8250: Fix oops for port->pm on uart_change_pm()

Unloading a hardware specific 8250 driver can produce error "Unable to handle kernel paging request at virtual address" about ten seconds after unloading the driver. This happens on uart_hangup() calling uart_change_pm().

Turns out commit 04e82793f068 ("serial: 8250: Reinit port->pm on port specific driver unbind") was only a partial fix. If the hardware specific driver has initialized port->pm function, we need to clear port->pm too. Just reinitializing port->ops does not do this. Otherwise serial8250_pm() will call port->pm() instead of serial8250_do_pm().

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

Unloading a hardware-specific 8250 serial driver unbind can cause a kernel oops due to a dangling port->pm pointer, fixed by clearing port->pm on driver unbind.

Root

Cause

When a hardware-specific 8250 serial driver is unloaded, the port->pm function pointer is not cleared, leaving a dangling reference. After the driver is removed, a subsequent call to uart_change_pm() (e.g., during uart_hangup()) invokes port->pm is still set to the now-unloaded driver's callback. This causes the kernel to jump to an invalid address, resulting in an oops. A prior fix (commit 04e82793f068) only reinitialized port->ops, but did not address port->pm [1][2][3][4].

Exploitation

An attacker would need the ability to unload a) load and unload a hardware-specific 8250 driver, and b) trigger a hangup on the corresponding serial port. This requires local access and the ability to manipulate kernel modules. No special privileges beyond the ability to unload the driver are needed; the oops occurs automatically during normal port teardown.

Impact

A successful trigger results in a kernel oops (NULL pointer dereference or invalid page access), causing a denial of service (system crash or hang). There is no evidence of code execution or privilege escalation from this bug.

Mitigation

The fix is to clear port->pm (set it to NULL) when a hardware-specific 8250 driver is unbound, ensuring that serial8250_pm() falls back to serial8250_do_pm() instead of calling the stale pointer. The patch has been applied to the stable kernel trees [1][2][3][4]. Users should update to a kernel containing the fix.

AI Insight generated on May 19, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected products

1
  • Linux/Kernelllm-fuzzy
    Range: = 8250 driver containing commit 04e82793f068 and missing the fix commits

Patches

8

Vulnerability mechanics

Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

8

News mentions

0

No linked articles in our index yet.