01.12.2020

Предложение по блокировке драйверов-прослоек, предоставляющих доступ к GPL-вызовам ядра Linux


Кристоф Хелвиг (Christoph Hellwig), известный разработчик ядра Linux, в своё время входивший в управляющий технический комитет организации Linux Foundation и выступавший истцом в связанном с GPL судебном разбирательстве с VMware, предложил ужесточить защиту от связывания проприетарных драйверов с компонентами ядра Linux, экспортируемыми только для модулей под лицензией GPL. Для обхода ограничения на экспорт GPL-символов производители проприетарных драйверов используют модуль-прослойку, код которой открыт и распространяется под лицензией GPLv2, но функции сводятся к трансляции доступа проприетарного драйвера к необходимым API ядра, запрещённым для использования из проприетарного кода напрямую.

Для блокирования подобного манёвра Кристоф Хелвиг подготовил для ядра Linux патчи, обеспечивающие наследование флагов, связанных с экспортом GPL-символов. Предложение сводится к наследованию флага TAINT_PROPRIETARY_MODULE во всех модулях, импортирующих символы из модулей с данным флагом. Таким образом, если GPL модуль-прослойка попытается импортировать символы из не-GPL модуля, то GPL-модуль унаследует метку TAINT_PROPRIETARY_MODULE и не сможет обращаться к компонентам ядра, доступным только для модулей под лицензией GPL, даже если модуль ранее импортировал символы из категории «gplonly».

Изменение предложено в ответ на публикацию инженером из Facebook серии патчей с реализацией новой подсистемы netgpu, позволяющей организовать прямой обмен данными (DMA zero-copy) между сетевой картой и GPU, при этом выполняя обработку протокола силами CPU. Недовольство разработчиков вызвала доступность реализации только для проприетарных драйверов NVIDIA через предоставляемую данными драйверами GPL-прослойку. В ответ на критику автор патчей указал, что подсистема не привязана к NVIDIA и её поддержка может быть обеспечена в том числе для программных интерфейсов к GPU AMD и Intel. В итоге продвижение netgpu в ядро было признано невозможным до появления рабочей поддержки на основе свободных драйверов, таких как AMDGPU, Intel i915 или Nouveau.

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

Добавить комментарий