Предложение за блокиране на драйвери-слоеве, предоставящи достъп до 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”.

При обсъждането също беше предположение предложение за обратно блокиране — ако модул импортира символи EXPORT_SYMBOL_GPL, всички символи, експортирани от този модул, не трябва да се импортират от модули, които явно не декларират съвместимост с GPL. Т.е. ако модулът импортира символи EXPORT_SYMBOL_GPL, всички его експортирани символи трябва да се обработват като EXPORT_SYMBOL_GPL. Кристоф Хелвиг написа, че напълно подкрепя това предложение, но такава промяна няма да бъде приета от Линус Торвалдс, тъй като ще доведе до недостъпност за собствените драйвери на значителна част от подсистемите на ядрото, тъй като при разработката на драйвери се използват основни символи, експортирани под GPL.

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

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster