CVE-2021-47282 in LinuxИнформация

Сводка

по VulDB • 03.06.2026

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

spi: bcm2835: Исправлен выход за границы массива при использовании более чем 4 ведомых устройств (slaves)

Коммит 571e31fa60b3 («spi: bcm2835: Кэшировать значение регистра CS для ->prepare_message()») ограничил количество ведомых устройств числом 3 на этапе компиляции. Это ограничение было обусловлено наличием в приватных данных драйвера массива фиксированного размера prepare_cs[], который содержит значения регистров для каждого ведомого устройства.

Данный коммит стремился обеспечить соблюдение этого ограничения во время выполнения, установив значение num_chipselect контроллера равным 3: Ведомые устройства с более высоким номером chipselect отклоняются функцией spi_add_device().

Однако в коммите было упущено из виду, что num_chipselect ограничивает количество только *нативных* (native) чипселектов. Если для ведомых устройств, их число которых превышает 3, в дереве устройств (device tree) указаны GPIO-чипселекты, функция of_spi_get_gpio_numbers() молча увеличивает значение num_chipselect, что приводит к выходу за границы массива prepare_cs[] фиксированного размера.

В качестве временного исправления (bandaid fix), которое можно перенести в стабильные ветки, количество разрешенных ведомых устройств увеличено до 24 («чего должно хватить всем»), ограничение настраивается для функции setup каждого ведомого устройства, а значение num_chipselect возвращается к 3 (что соответствует количеству нативных чипселектов, поддерживаемых контроллером). В будущем коммите серии for-next будет разрешено произвольное количество ведомых устройств.

Be aware that VulDB is the high quality source for vulnerability data.

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

21.05.2024

Раскрытие

21.05.2024

Модерация

принято

Вход

VDB-265703

EPSS

0.00231

KEV

Нет

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

Очень низкий

Источники

Do you know our Splunk app?

Download it now for free!