Christoph Hellwig, znany programista jądra Linux, który kiedyś był członkiem zarządu technicznego organizacji Linux Foundation i występował w charakterze powoda w związku z GPL z VMware, które ma na celu zaostrzenie ochrony przed powiązaniem własnościowych sterowników z komponentami jądra Linux, eksportowanymi wyłącznie dla modułów na licencji GPL. Aby obejść ograniczenie dotyczące eksportu symboli GPL, producenci własnościowych sterowników używają modułu pośredniczącego, którego kod jest otwarty i rozpowszechniany na licencji GPLv2, ale jego funkcje sprowadzają się do tłumaczenia dostępu właścicielskiego sterownika do niezbędnych API jądra, niedozwolonych do użycia bezpośrednio z kodu własnościowego.
Aby zablokować taki manewr, Christoph Hellwig dla jądra Linux przygotował poprawki, które umożliwiają dziedziczenie flag związanych z eksportem symboli GPL. Propozycja polega na dziedziczeniu flagi TAINT_PROPRIETARY_MODULE we wszystkich modułach importujących symbole z modułów z tą flagą. W ten sposób, jeśli moduł pośredniczący GPL spróbuje zaimportować symbole z modułu nie-GPL, to moduł GPL odziedziczy etykietę TAINT_PROPRIETARY_MODULE i nie będzie mógł uzyskać dostępu do komponentów jądra dostępnych wyłącznie dla modułów na licencji GPL, nawet jeśli moduł wcześniej importował symbole z kategorii „gplonly”.
Podczas dyskusji również było propozycje dotyczące odwrotnej blokady — jeśli moduł importuje symbole EXPORT_SYMBOL_GPL, to wszelkie symbole eksportowane przez dany moduł nie powinny być importowane przez moduły, które wyraźnie nie zadeklarowały zgodności z GPL. To znaczy, że jeśli moduł importuje symbole EXPORT_SYMBOL_GPL, to wszystkie jego eksportowane symbole powinny być traktowane jako EXPORT_SYMBOL_GPL. Christoph Hellwig , że w 100% zgadza się z tą propozycją, ale taka zmiana nie przejdzie u Linusa Torvaldsa, ponieważ doprowadzi do niedostępności dla własnościowych sterowników większej części podsystemów jądra, ponieważ podczas tworzenia sterowników używane są podstawowe symbole eksportowane na GPL.
Zmiana została zaproponowana w odpowiedzi na inżyniera z Facebooka zestaw poprawek realizujących nowy podsystem netgpu, który umożliwia bezpośrednią wymianę danych (DMA
zero-copy) między kartą sieciową a GPU, przy jednoczesnej obróbce protokołu przez CPU. deweloperów wywołała implementacja tylko dla własnościowych sterowników NVIDIA poprzez dostarczaną przez te sterowniki warstwę GPL. W odpowiedzi na autor łatek , że podsystem nie jest związany z NVIDIA, a jego wsparcie może być zapewnione również dla interfejsów programowania GPU AMD i Intel. Ostatecznie wprowadzenie netgpu do jądra zostało uznane za niemożliwe do momentu pojawienia się działającego wsparcia opartego na wolnych sterownikach, takich jak AMDGPU, Intel i915 lub Nouveau.
Źródło: opennet.ru
