Christoph Hellwig, en känd utvecklare av Linux-kärnan som tidigare var med i den tekniska kommittén för Linux Foundation och agerade som kärande i en rättslig strid relaterad till GPL med VMware, för att skärpa skyddet mot koppling av proprietära drivrutiner till Linux-kärnkomponenter som endast exporteras för moduler under GPL-licens. För att kringgå exportbegränsningen av GPL-symboler använder tillverkare av proprietära drivrutiner en mellanmodul vars kod är öppen och sprids under GPLv2, men vars funktioner begränsas till att översätta mellan den proprietära drivrutinen och nödvändiga API:er i kärnan som inte får användas direkt från proprietär kod.
För att blockera denna typ av manöver föreslog Christoph Hellwig patchar för Linux-kärnan som säkerställer ärvande av flaggor relaterade till export av GPL-symboler. Förslaget går ut på ärvande av flaggan TAINT_PROPRIETARY_MODULE i alla moduler som importerar symboler från moduler med denna flagga. Så om en GPL-mellanmodul försöker importera symboler från en icke-GPL-modul, kommer GPL-modulen att ärva märket TAINT_PROPRIETARY_MODULE och inte kunna få åtkomst till kärnkomponenter som endast är tillgängliga för moduler under GPL-licens, även om modulen tidigare importerade symboler från kategorin 'gplonly'.
Vid diskussionen föreslogs även ett omvänt blockering — om en modul importerar symboler EXPORT_SYMBOL_GPL, får inga symboler som exporteras av denna modul importeras av moduler som inte klart deklarerar kompatibilitet med GPL. Det vill säga, om en modul importerar symboler EXPORT_SYMBOL_GPL, ska alla dess exporterade symboler behandlas som EXPORT_SYMBOL_GPL. Christoph Hellwig , håller fullständigt med detta förslag, men en sådan ändring kommer inte att godkännas av Linus Torvalds, eftersom det skulle göra en stor del av kärnans subsystem otillgängliga för proprietära drivrutiner, eftersom grundläggande symboler som exporteras under GPL inkluderas vid utvecklingen av drivrutiner.
Ändringen föreslogs som svar på en ingenjör från Facebook som skickade in en serie patchar för implementering av det nya subsystemet netgpu, vilket gör det möjligt att organisera direkt datbyten (DMA
zero-copy) mellan nätverkskortet och GPU:n, samtidigt som CPU:n utför protokollet. hos utvecklarna väcktes genomförande endast för proprietära NVIDIA-drivrutiner via den givna GPL-lagret som tillhandahålls av dessa drivrutiner. Som svar på skaparen av patcharna , att under systemet inte är knutet till NVIDIA och dess stöd kan även tillhandahållas för programmeringsgränssnitt för GPU:er från AMD och Intel. Som ett resultat erkändes det att främjandet av netgpu in i kärnan var omöjligt tills fungerande stöd baserat på fria drivrutiner, såsom AMDGPU, Intel i915 eller Nouveau, fanns.
Källa: opennet.ru
