KernelScan.io

HIGH Introduced in 5.6

nouveau ChannelKill UAF

CVE-2026-89803

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI7.0HIGH

01

In the Linux kernel, the following vulnerability has been resolved: drm/nouveau: unsubscribe the channel-kill event before the fence context nouveau_channel_del() tears the fence context down first and only drops the channel-kill subscription later, in the middle of the nvif object teardown: if (chan->fence) nouveau_fence(chan->cli->drm)->context_del(chan); ... nvif_object_dtor(&chan->vram); nvif_event_dtor(&chan->kill); The subscribed handler is nouveau_channel_killed(), which calls nouveau_channel_kill() and from there nouveau_fence_context_kill() on chan->fence. A kill event delivered in that window takes fctx->lock and walks fctx->pending on a fence context that context_del() has already freed. Nothing reaches this below Fermi today, because the subscription is gated on FERMI_CHANNEL_GPFIFO and nothing kills a channel there. On Fermi and newer the window is real but narrow, since a kill has to land exactly while the channel is being destroyed. That is reason enough on its own, which is why this carries a Fixes: tag. The last patch in this series subscribes Tesla channels as well; nothing kills those today, so it does not widen the exposure now, but it is the groundwork for a recovery path that would, and the ordering is better fixed before that lands than alongside it. Drop the subscription before anything it depends on is torn down.

02

Engine v0.6.0

Risk summary

A local user with access to a Nouveau (NVIDIA) GPU — Fermi architecture or newer — can trigger a use-after-free in the kernel's GPU driver by racing a channel-kill event against channel destruction. The freed fence context is accessed by the kill-event handler, leading to kernel memory corruption that can crash the system or potentially escalate privileges. The race window is narrow but can be widened through repeated channel creation and destruction.

Affecteddrivers/gpu/drm/nouveau/nouveau_chan.c (drm/nouveau)

Vulnerability analysis

When a GPU channel is destroyed, the nouveau driver tears down the fence context first and only later removes the channel-kill event subscription. If the GPU delivers a channel-kill event during that gap, the event handler runs on a fence context that has already been freed, causing a use-after-free. The fix simply moves the event unsubscription to the very beginning of the teardown sequence, so the handler can no longer fire after any of the structures it depends on have been freed. This is reachable by any local user with access to the nouveau DRM render device on systems with an NVIDIA GPU of Fermi generation or newer; no special kernel capabilities are required beyond normal GPU device access. The race window is narrow — the kill event must arrive precisely during channel destruction — but an attacker can retry repeatedly to hit it.

03

BranchIntroducedFixed inPatch commit
6.125.66.12.110f5a79a9ebfba
6.185.66.18.51f3830fdd6930
6.65.66.6.1605db663fbff7b
7.25.67.2.51fef7553dc62
mainline5.67.3511585987d27
cip/6.125.66.12.111-cip32f5a79a9ebfba

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.111-cip32
cip/6.1Affected — no CIP fix yet (latest 6.1.189-cip61)
cip/6.1-rtAffected — no CIP fix yet (latest 6.1.189-cip61-rt32)
cip/5.10Affected — no CIP fix yet (latest 5.10.271-cip78)
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)