---
id: "CVE-2026-98772"
kind: "vulnerability"
aliases: ["CVE-2026-98772"]
title: "Linux kernel USB serial: port teardown lets completion handlers use freed memory"
severity: "unknown"
cvss: null
epss: null
exploited: false
status: "open"
category: "infrastructure"
products: []
ecosystems: []
tags: ["infrastructure", "kernel", "linux", "usb-serial"]
not_affected_if: ["no-usb-serial-devices", "usb-serial-driver-not-loaded"]
published_at: "2026-10-18T16:17:31+00:00"
first_seen_at: "2026-10-23T21:57:16+00:00"
updated_at: "2026-10-25T05:15:31+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-98772", "first_seen_at": "2026-10-23T21:57:16+00:00"}]
---

# Linux kernel USB serial: port teardown lets completion handlers use freed memory

In the Linux kernel USB serial core, port driver data could be freed while shared URB completion handlers still accessed it during disconnect or last close. A local or device-triggered race can cause a use-after-free, which may crash the kernel or be leveraged further.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- `uname -r` and compare against the fixed kernel builds in the upstream stable tree (unknown from the sources)
- `lsmod | grep -i usbserial` to see whether the USB serial driver is loaded
- unknown whether specific multiport USB serial drivers are required from the sources

## Fix

- Update the Linux kernel to a release that includes the upstream commit fixing USB serial port tear down (exact version unknown from the sources)
- Use your distribution's kernel update channel and reboot after installing

## Timeline

- 2026-10-23T21:57:16+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-98772

## From the sources

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

USB: serial: fix port tear down use-after-free

Some drivers for multiport devices access port driver data from
completion handlers of shared URBs submitted at attach() or first open()
and stopped at disconnect() or last close(), respectively.

A simple NULL check before accessing the driver data makes sure that a
port state container has at least been allocated, but a completion
handler can still race with port tear down.

Reorder the disconnect handling so that ports are not deregistered (and
their driver data freed) until after all ports have been hung up and the
driver disconnect() callback has run so that all I/O has been stopped.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
