---
id: CVE-2026-99230
title: 'io_uring/cmd: don''t leave list poison in ->hash_node'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  io_uring/cmd: don't leave list poison in ->hash_node

  io_uring_cmd_del_cancelable() uses hlist_del() to take a command off
  ->cancelable_uring_cmd, which leaves LIST_POI…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= 93b8cc60c37b9d17732b7a297e5dca29b50a990d <
    cc7f13d006fcefed9564bd79f135b51d344e9c77
  - >-
    Linux >= 93b8cc60c37b9d17732b7a297e5dca29b50a990d <
    2d5af21422060c088f6e4fb0f1e7dcf5bcdd6707
  - >-
    Linux >= 93b8cc60c37b9d17732b7a297e5dca29b50a990d <
    685b49483200384d7f49d338af476e26e6824637
  - >-
    Linux >= 93b8cc60c37b9d17732b7a297e5dca29b50a990d <
    c4fe1024b2f3f40f8010591a0c0ad541e2883eda
  - >-
    Linux >= 93b8cc60c37b9d17732b7a297e5dca29b50a990d <
    4c83e39f4d1944d7146fd06094f2c8053238d55c
  - Linux 6.7
published: '2026-11-02'
updated: '2026-11-06'
sourceUpdated: '2026-11-06T17:15:11.543Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-99230'
references:
  - url: 'https://git.kernel.org/stable/c/cc7f13d006fcefed9564bd79f135b51d344e9c77'
  - url: 'https://git.kernel.org/stable/c/2d5af21422060c088f6e4fb0f1e7dcf5bcdd6707'
  - url: 'https://git.kernel.org/stable/c/685b49483200384d7f49d338af476e26e6824637'
  - url: 'https://git.kernel.org/stable/c/c4fe1024b2f3f40f8010591a0c0ad541e2883eda'
  - url: 'https://git.kernel.org/stable/c/4c83e39f4d1944d7146fd06094f2c8053238d55c'
tags:
  - cve.org
epss: 0.00157
epssPercentile: 0.04845
ingestedAt: '2026-11-05T20:33:06.386Z'
---

## Overview

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

io_uring/cmd: don't leave list poison in ->hash_node

io_uring_cmd_del_cancelable() uses hlist_del() to take a command off
->cancelable_uring_cmd, which leaves LIST_POISON1/2 behind in
->hash_node. Requests are recycled through the request cache without
being reinitialised, and not every user of ->hash_node sets it up before
it is used:

If a vectored futex wait is woken while futex_wait_multiple_setup() is
still queueing the futexes, io_futexv_wait() doesn't add the request to
->futex_list, and leaves the completion to the task_work queued by the
wake up. io_futexv_complete() ends in __io_futex_complete(), whose
hlist_del_init() is fine for a request that is unhashed, which is how all
other users of the node leave it. If the request was a cancelable
uring_cmd in its previous life, e.g. a ublk FETCH_REQ, it writes through
LIST_POISON2:

  Oops: general protection fault, probably for non-canonical address
  KASAN: maybe wild-memory-access in range [0xdead000000000120-...]
  RIP: 0010:io_futexv_complete+0x219/0x420
  Call Trace:
   tctx_task_work_run+0x804/0x950
   tctx_task_work+0x71/0xa0
   task_work_run+0x118/0x200

Leave the node unhashed.

## Affected

- `Linux >= 93b8cc60c37b9d17732b7a297e5dca29b50a990d < cc7f13d006fcefed9564bd79f135b51d344e9c77`
- `Linux >= 93b8cc60c37b9d17732b7a297e5dca29b50a990d < 2d5af21422060c088f6e4fb0f1e7dcf5bcdd6707`
- `Linux >= 93b8cc60c37b9d17732b7a297e5dca29b50a990d < 685b49483200384d7f49d338af476e26e6824637`
- `Linux >= 93b8cc60c37b9d17732b7a297e5dca29b50a990d < c4fe1024b2f3f40f8010591a0c0ad541e2883eda`
- `Linux >= 93b8cc60c37b9d17732b7a297e5dca29b50a990d < 4c83e39f4d1944d7146fd06094f2c8053238d55c`
- `Linux 6.7`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
