Zaproponuj zablokowanie sterowników, które zapewniają dostęp do wywołań GPL do jądra Linuksa

Logo Jądro Linux, Tux

Christopha Hellwiga, wybitny programista jądra Linuksa, który był kiedyś członkiem technicznego komitetu sterującego Linux Foundation i pozwał w sporze o GPL przeciwko VMware.

Zaproponował zaostrzenie zabezpieczeń przed wiązaniem zastrzeżone sterowniki do wyeksportowanych komponentów jądra Linuksa tylko dla modułów na licencji GPL.

Aby uniknąć ograniczeń eksportować symbole GPL, firmowi producenci kontrolerów stosują moduł warstwowy, którego kod jest open source i jest rozpowszechniany na licencji GPLv2, ale funkcje sprowadzają się do przekazywania dostępu właścicielowi kontrolera do interfejsów API pliki jądra, których użycie jest zabronione bezpośrednio z zastrzeżonego kodu.

Aby zablokować taki manewr, Christoph Helwig przygotował łatki dla jądra Linuksa, które zapewniają dziedziczenie flag związanych z eksportem symboli GPL.

Mamy błąd w rozwiązaniu naszego modułu _GPL od pierwszego dnia,
to znaczy, moduł może twierdzić, że jest objęty licencją GPL i używać eksportu _GPL, jednocześnie polegając na symbolach modułów innych niż GPL. Jest to używane jako obejście eksportu _GPL przez użycie małego modułu opakowującego, który wykorzystuje eksport _GPL i inne funkcje.

Propozycja sprowadza się do dziedziczenia wskaźnika TAINT_PROPRIETARY_MODULE we wszystkich modułach, które importują symbole modułów z tą flagą.

Dlatego jeśli moduł warstwy środkowej GPL spróbuje zaimportować symbole z modułu innego niż GPL, moduł GPL odziedziczy znacznik TAINT_PROPRIETARY_MODULE i nie będzie mógł uzyskać dostępu do składników jądra dostępnych tylko dla modułów na licencji GPL, nawet jeśli moduł został wcześniej zaimportowany symbole z „gplonly”.

Łatka Hellwiga próbuje to teraz utrudnić. Moduły importujące zastrzeżone symbole są oznaczone jako zastrzeżone i nie mają dostępu do symboli GPL. 

Zmiana została zaproponowana w odpowiedzi na serię wydanych poprawek przez inżyniera Facebooka z wdrożeniem nowego podsystemu netgpu, który umożliwia bezpośrednią wymianę danych (zero copy DMA) pomiędzy kartą sieciową a GPU, podczas przetwarzania protokołu przez CPU.

Pozwoliłoby to uniknąć metody pierwotnie zaplanowanej przez Jonathana Lemona dla twoich poprawek i spowodowałoby rozwój międzywarstw, aby pominąć symbol GPL będzie znacznie trudniejsze, nawet jeśli nadal występuje niewielka luka, jak wskazano.

W dyskusji, którą obecnie prowadzą różni programiści jądra Linuksa zasugerowano odwrotne blokowanie: Jeśli moduł importuje symbole EXPORT_SYMBOL_GPL, symbole eksportowane przez ten moduł nie powinny być importowane przez moduły, które nie deklarują wprost zgodności z GPL.

Te bez modułu importują symbole EXPORT_SYMBOL_GPL, wszystkie wyeksportowane przez nie symbole powinny być traktowane jako EXPORT_SYMBOL_GPL.

Christoph Helwig napisał, że zgadza się w 100% z tą propozycją, ale Linus Torvalds nie przegapi tej zmiany, ponieważ spowoduje ona, że ​​większość podsystemów jądra stanie się niedostępna dla prawnie zastrzeżonych sterowników, ponieważ podczas opracowywania sterowników symbole bazowe są eksportowane na licencji GPL

Deweloperzy nie byli zadowoleni z dostępności implementacji tylko dla zastrzeżonych sterowników NVIDIA poprzez warstwę GPL dostarczaną przez te sterowniki.

W odpowiedzi na krytykę autor poprawki wskazał, że podsystem nie jest powiązany z NVIDIA a jego obsługę można zapewnić między innymi dla interfejsów programowych dla procesorów graficznych AMD i Intel.

W rezultacie promocja netgpu w jądrze została uznana za niemożliwą do czasu udostępnienia działającego wsparcia opartego na bezpłatnych sterownikach, takich jak AMDGPU, Intel i915 czy Nouveau.

Musisz o tym pamiętać w przeszłości, społeczność jądra Linuksa wprowadził szereg zmian że świadomie lub jako efekt uboczny, utrudniły rozwój zastrzeżonych modułów lub niezgodne z licencjami.

W końcu jeśli chcesz dowiedzieć się więcej na ten temat, możesz sprawdzić szczegóły, przechodząc do poniższego łącza.

źródło: https://lkml.org/


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   David powiedział

    Może lepiej byłoby umieścić artykuł w języku angielskim zamiast korzystać z tłumacza. Jest wiele elementów, które są dla mnie niezrozumiałe.