U.S. flag   An official website of the United States government
Dot gov

Official websites use .gov
A .gov website belongs to an official government organization in the United States.

Https

Secure .gov websites use HTTPS
A lock (Dot gov) or https:// means you've safely connected to the .gov website. Share sensitive information only on official, secure websites.

Vulnerability Change Records for CVE-2026-46263

Change History

CVE Translated by NIST 7/22/2026 4:10:00 PM

Action Type Old Value New Value
Added Translation

                  
                
              
Title: Linux, Description: En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:

drm/amd/display: Corrección de índice de codificador de flujo fuera de límites v3

eng_id puede ser negativo y que stream_enc_regs[]
puede ser indexado fuera de límites.

eng_id se usa directamente como un índice en stream_enc_regs[], que tiene
solo 5 entradas. Cuando eng_id es 5 (ENGINE_ID_DIGF) o negativo, esto puede
acceder a memoria más allá del final del array.

Añadir una comprobación de límites usando ARRAY_SIZE() antes de usar eng_id como un índice.
La conversión a tipo sin signo también rechaza valores negativos.

Esto evita el acceso fuera de límites.

Corrige el siguiente error de smatch:
dcn_resource.c: stream_encoder_create() puede indexar
stream_enc_regs[eng_id] fuera de límites (tamaño 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         /* Mapeo de bloques de registro VPG, AFMT, DME a instancia de bloque DIO */
    1257         if (eng_id <= ENGINE_ID_DIGF) {

ENGINE_ID_DIGF es 5. ¿debería <= ser <?

Sin relación, pero, ugh, ¿por qué Smatch dice que 'eng_id' puede ser negativo?
end_id es de tipo signed long, pero hay comprobaciones en la función llamadora que impiden que sea negativo.

    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],
                                                  ^^^^^^^^^^^^^^^^^^^^^^^ Este array stream_enc_regs[] tiene 5 elementos, por lo que estamos un elemento más allá del final del array.

    ...

    1287         return &enc1->base;
    1288 }

v2: usar comprobación de límites explícita como sugirieron Roman/Dan; evitar conversión a unsigned int

v3: El compilador ya sabe cómo comparar los dos valores, por lo que la
    conversión (int) no es necesaria. (Roman)