KernelScan.io

HIGH

amdgpu DecMsg Overflow

CVE-2026-89818

CVSS 7.1 / 10.0 NVD

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

KernelScan AI7.1HIGH

01

In the Linux kernel, the following vulnerability has been resolved: drm/amdgpu/vcn: fix integer overflow in dec_msg buffer count check If the supplied msg[2] (num_buffers) is 0x3FFFFFFF, the expression 6 + num_buffers * 4 wraps to 2 and the bounds check passes, letting the parser loop far past the end of the message BO. Triggering it additionally requires a ~4GiB mapping so that msg[1] survives the earlier "header does not fit in BO" check. Rewrite the test in division form, which is overflow-free by construction. Also update the message to reflect that msg is invalid.

02

Engine v0.6.0

Risk summary

A local user with access to an AMD GPU render node can submit a crafted VCN decode message that bypasses a bounds check via integer overflow, causing the kernel parser to read far past the end of the graphics buffer. This can leak kernel memory and potentially corrupt memory through GPU DMA operations, or crash the kernel. Systems without AMD VCN GPUs are unaffected.

Affecteddrivers/gpu/drm/amd/amdgpu/vcn_v3_0.c, vcn_v4_0.c (drm/amdgpu VCN)

Vulnerability analysis

A bounds check in the AMD VCN video-decode message parser multiplies the attacker-supplied buffer count by four and adds six; when the count is very large the result wraps around to a small value, the check passes, and the parser loops far past the end of the graphics memory buffer object, reading out-of-bounds kernel memory. The fix rewrites the same test using division instead of multiplication, which cannot overflow, and adds a minimum-length guard so that malformed messages are rejected outright. A local user with access to the AMD GPU render device can trigger this by submitting a crafted decode message through the command-submission ioctl; the attack requires an AMD GPU with VCN support and a roughly 4 GiB memory mapping to satisfy an earlier sanity check.

03

BranchIntroducedFixed inPatch commit
6.16.1.1756.1.188c2340281be4d
6.66.6.1406.6.1576dceaeceaa7c
6.126.12.906.12.11047799e1f893d
5.155.15.2095.169ae19bd60891
7.07.0.97.14d7390530853
7.2—7.2.5—
mainline—7.3-rc1—
6.186.18.326.18.517e28853c78c2
cip/6.12—6.12.111-cip3247799e1f893d