Избавление ядра Linux от кода, меняющего поведение для процессов, начинающихся на символ X

Джейсон Доненфилд (Jason A. Donenfeld), автор VPN WireGuard, обратил внимание разработчиков на присутствующий в коде ядра Linux грязный хак, изменяющий поведение для процессов, имя которых начинается на символ «X». На первый взгляд подобные исправления обычно применяются в руткитах для оставления скрытой лазейки в привязке к процессу, но разбор показал, что изменение было добавлено в 2019 году для временного устранения всплывшего нарушения совместимости с пространством пользователя, в соответствии с принципом, что изменения в ядре не должны нарушать совместимость с приложениями.

Проблемы возникали при попытке использования механизма атомарного изменения видеорежима в применяемом в X.Org-сервере DDX-драйвере xf86-video-modesetting, чем и была обусловлена привязка к процессам, начинающимся на символ «X» (подразумевалось, что обходной манёвр применяется к процессу «Xorg»). Почти сразу проблема в X.Org была устранена (использование атомарного API было отключено по умолчанию), но из ядра временное исправление убрать забыли и попытка отправки ioctl для атомарного изменения режима для всех процессов, начинающихся на символ «X», до сих пор продолжает приводить к возвращению ошибки.

   if (current-›comm[0] == 'X' && req-›value == 1) {
	pr_info("broken atomic modeset userspace detected, disabling atomic\n");
	return -EOPNOTSUPP;
   }
    

Источник: http://www.opennet.ru/opennews/art.shtml?num=58081

©  OpenNet