gladilov.org.ru gladilov.org.ua

Опубликованы тестовые ядра Linux 4.4.256 и 4.9.256

Грег Кроа-Хартман (Greg Kroah-Hartman) опубликовал выпуски ядра Linux 4.4.256 и 4.9.256, которые сформированы специально для проверки корректности обработки составных частей номера версии, не укладывающихся в однобайтовое значение. Изменения в опубликованных выпусках ограничиваются только увеличением номера версии в Makefile для того, чтобы проверить, не возникнет ли проблем в пространстве пользователя.

Изначально под счётчик номера версии в ядре было выделено 8-битовое значение, что делает вызов макроса KERNEL_VERSION(4, 4, 256) эквивалентным KERNEL_VERSION(4, 5, 0). Значение макроса KERNEL_VERSION, вычисляется так:

((a) << 16) + ((b) << 8) + (c))

затем экспортируется в пространство пользователя в форме константы LINUX_VERSION_CODE, которая используется при проверке текущей версии ядра. Для ядра подобное переполнение не вызывает проблем, но значение LINUX_VERSION_CODE проверяется и некоторыми компонентами в пространстве пользователя, такими как GCC и Glibc, что потенциально может привести к непредсказуемым проблемам.

Изначально разработчики ядра планировали перейти на 16-разрядный счётчик вместо 8-разрядного, но это оказалось невозможным так как константа LINUX_VERSION_CODE, вычисляемая с использованием 8-битного значения, экспортируется в пространство пользователя и замена типа приведёт к нарушению ABI. Поэтому решено оставить переполнение и посмотреть, как это отразится на пространстве пользователя. Разработчикам дистрибутивов предлагается сформировать тестовые сборки для проверки появления возможных проблем в пространстве пользователя при полной пересборке.

Ссылки:
http://kroah.com/log/blog/2021/02/05/8-bits-are-enough-for-a-version-number-dot-dot-dot/
https://www.opennet.ru/opennews/art.shtml?num=54544

Популярное
Наверх