CVE-2026-46263 in LinuxИнформация

Сводка

по VulDB • 03.06.2026

В ядре Linux устранена следующая уязвимость:

drm/amd/display: исправление выхода за границы индекса кодировщика потока v3

Значение eng_id может быть отрицательным, что приводит к выходу за границы массива stream_enc_regs[].

Значение eng_id используется напрямую в качестве индекса для массива stream_enc_regs[], который содержит только 5 элементов. При значении eng_id равном 5 (ENGINE_ID_DIGF) или отрицательном значении происходит обращение к памяти за пределами массива.

Добавлена проверка границ с использованием макроса ARRAY_SIZE() перед использованием eng_id в качестве индекса. Приведение к беззнаковому типу также отбрасывает отрицательные значения.

Это предотвращает выход за границы массива.

Исправлена следующая ошибка smatch: dcn*_resource.c: функция stream_encoder_create() может выходить за границы индекса stream_enc_regs[eng_id] (размер 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 /* Отображение блоков регистров VPG, AFMT, DME на экземпляр блока DIO */ 1257 if (eng_id <= ENGINE_ID_DIGF) {

ENGINE_ID_DIGF равно 5. Должно ли быть <= или <?

Не относится к делу, но, увы, почему Smatch сообщает, что "eng_id" может быть отрицательным? Тип end_id — signed long, но в вызывающей функции есть проверки, предотвращающие его отрицательное значение.

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],
^^^^^^^^^^^^^^^^^^^^^^^ Массив stream_enc_regs[] содержит 5 элементов, поэтому мы обращаемся к элементу за пределами массива.

...

1287 return &enc1->base; 1288 }

v2: использовать явную проверку границ, как предложили Roman/Dan; избежать приведения к unsigned int

v3: Компилятор уже умеет сравнивать эти два значения, поэтому приведение (int) не требуется. (Roman)

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Ответственный

Linux

Резервировать

13.05.2026

Раскрытие

03.06.2026

Модерация

принято

Вход

VDB-368168

EPSS

0.00000

KEV

Нет

Деятельности

Очень низкий

Источники

Interested in the pricing of exploits?

See the underground prices here!