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

Published Jun 3, 2026
·
Updated

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

drm/amd/display: Fix out-of-bounds stream encoder index v3

engid can be negative and that streamencregs[] can be indexed out of bounds.

engid is used directly as an index into streamencregs[], which has only 5 entries. When engid is 5 (ENGINEIDDIGF) or negative, this can access memory past the end of the array.

Add a bounds check using ARRAYSIZE() before using engid as an index. The unsigned cast also rejects negative values.

This avoids out-of-bounds access.

Fixes the below smatch error: dcnresource.c: streamencodercreate() may index streamencregs[engid] out of bounds (size 5).

drivers/gpu/drm/amd/amdgpu/../display/dc/resource/dcn351/dcn351resource.c 1246 static struct streamencoder dcn35streamencodercreate( 1247 enum engineid engid, 1248 struct dccontext ctx) 1249 {

...

1255 1256 / Mapping of VPG, AFMT, DME register blocks to DIO block instance / 1257 if (engid <= ENGINEIDDIGF) {

ENGINEIDDIGF is 5. should <= be <?

Unrelated but, ugh, why is Smatch saying that "engid" can be negative? endid is type signed long, but there are checks in the caller which prevent it from being negative.

1258 vpginst = engid; 1259 afmtinst = engid; 1260 } else 1261 return NULL; 1262

...

1281 1282 dcn35diostreamencoderconstruct(enc1, ctx, ctx->dcbios, 1283 engid, vpg, afmt, --> 1284 &streamencregs[engid], ^^^^^^^^^^^^^^^^^^^^^^^ This streamencregs[] 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)

Affected Software

4 affected components
Linux Linux kernel
Linux Linux kernel>=6.9<6.12.75
Linux Linux kernel>=6.13<6.18.14
Linux Linux kernel>=6.19<6.19.4

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    In dcn351_resource.c (dcn*_resource.c: stream_encoder_create()), add an ARRAY_SIZE() bounds check to ensure eng_id is within [0, ARRAY_SIZE(stream_enc_regs) - 1] before using it as an index into stream_enc_regs[]. ENGINE_ID_DIGF is 5, so the check must prevent indexing when eng_id is 5 or negative.

    Linux kernel (AMDGPU display) Bounds check for stream_enc_regs[] index in stream_encoder_create() = Use ARRAY_SIZE(stream_enc_regs) bounds check before indexing stream_enc_regs[eng_id]

Event History

Jun 3, 2026
CVE Published
via MITRE·03:50 PM
Data Sourced
via MITRE·03:50 PM
DescriptionSeverity
Data Sourced
via NVD·06:16 PM
RemedyDescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2026-46263?

The severity of CVE-2026-46263 is high with a CVSS score of 7.8.

2

How do I fix CVE-2026-46263?

To fix CVE-2026-46263, update the Linux kernel to the latest version where the vulnerability has been patched.

3

What risk does CVE-2026-46263 pose?

CVE-2026-46263 poses a risk of out-of-bounds access which could lead to memory corruption and potential system compromise.

4

What components are affected by CVE-2026-46263?

CVE-2026-46263 affects the AMD display driver component of the Linux kernel.

5

When was CVE-2026-46263 published?

CVE-2026-46263 was published on June 3, 2026.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203