Propozycja zablokowania sterowników interfejsów, które umożliwiają dostęp do wywołań GPL jądra Linux

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 postępowania sądowego z VMware, zaproponował 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 przygotował 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 zgłoszone 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 napisał, ż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 publikację 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. Niezadowolenie deweloperów wywołała dostępność implementacja tylko dla własnościowych sterowników NVIDIA poprzez dostarczaną przez te sterowniki warstwę GPL. W odpowiedzi na , ponieważ termin replica jest bardziej odpowiedni dla baz danych i zniekształca sens w kontekście systemu dźwiękowego. W końcu wybrano do zastąpienia autor łatek zaznaczył, ż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

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster