Ноутбук, просыпайся: патч для ускорения Linux вызвал системный коллапс

Ноутбук, просыпайся: патч для ускорения Linux вызвал системный коллапс

Почему разработчики решили отозвать проблемный модуль памяти ROX.

image

Непредвиденные сложности возникли у пользователей Linux после того, как в ядро внесли изменения, призванные повысить его производительность. Разработчики спешно отключают проблемное обновление, чтобы не допустить его появления в стабильной версии Linux 6.13, которая выйдет 19 января.

Началось всё в ноябре прошлого года с предложения инженера Microsoft изменить принцип работы модулей ядра. По его задумке, Linux x86_64 должен был начать использовать большие страницы памяти типа ROX (read only execute), чтобы хранить в них исполняемый код. Такое решение могло снизить нагрузку на буфер ассоциативной трансляции команд и заметно ускорить работу системы.

Однако первые же тесты выявили серьезные проблемы. Оказалось, что новый код не может работать с системами, где включена технология Control Flow Integrity (CFI). Более того, на ноутбуках Intel перестал корректно работать выход из режима гибернации.

Инженер Intel Питер Зийлстра отреагировал на ситуацию и добавил исправление в репозиторий tip/tip.git в ветку "x86/urgent". Этот патч вскоре отправят Линусу Торвальдсу вместе с очередным запросом на обновление x86/urgent. В комментариях к коду Зийлстра пояснил: EXECMEM_ROX не только сильно усложнил структуру файла alternative.c, но и привнес ошибки, которые нарушили работу некоторых вариантов CFI. Хотя разработчик Майк уже готовит необходимые исправления, функционал пока слишком нестабилен для использования.

Особое возмущение в сообществе вызвал тот факт, что изменения внесли в основную ветку ядра без согласования с мейнтейнерами архитектуры x86/x86_64. По словам опытного разработчика Linux из AMD Борислава Петкова, код не только провели без необходимых подтверждений, но даже не удалили после обнаружения бага.

В итоге было принято решение временно отключить поддержку EXECMEM_ROX, сохранив при этом сам код. В конфигурацию внесли правку, которая не позволит включить проблемный функционал при сборке ядра для архитектуры x86_64. Доработанную версию EXECMEM_ROX планируют представить в следующем цикле — Linux 6.14.

Ищем уязвимости в системе и новых подписчиков!

Первое — находим постоянно, второе — ждем вас

Эксплойтните кнопку подписки прямо сейчас