Christoph Hellwig, um conhecido desenvolvedor do núcleo Linux, que foi membro do comitê técnico da Linux Foundation e atuou como demandante em um processo relacionado à GPL com a VMware, para reforçar a proteção contra o vínculo de drivers proprietários a componentes do núcleo Linux, exportados apenas para módulos sob licença GPL. Para contornar a limitação na exportação de símbolos GPL, os fabricantes de drivers proprietários usam um módulo intermediário, cujo código é aberto e distribuído sob a licença GPLv2, mas cujas funções se resumem à tradução de acesso do driver proprietário às APIs necessárias do núcleo, proibidas para uso a partir de código proprietário diretamente.
Para bloquear esse tipo de manobra, Christoph Hellwig para o núcleo Linux patches que garantem a herança de bandeiras relacionadas à exportação de símbolos GPL. A proposta consiste na herança da bandeira TAINT_PROPRIETARY_MODULE em todos os módulos que importam símbolos de módulos com essa bandeira. Assim, se o módulo intermediário GPL tentar importar símbolos de um módulo não GPL, o módulo GPL herdará a marca TAINT_PROPRIETARY_MODULE e não poderá acessar componentes do núcleo disponíveis apenas para módulos sob licença GPL, mesmo que o módulo tenha importado anteriormente símbolos da categoria "gplonly".
Durante a discussão, também foi uma proposta de bloqueio reverso — se um módulo importar símbolos EXPORT_SYMBOL_GPL, quaisquer símbolos exportados por esse módulo não devem ser importados por módulos que não declaram explicitamente sua compatibilidade com GPL. Ou seja, se um módulo importar símbolos EXPORT_SYMBOL_GPL, todos os seus símbolos exportados devem ser tratados como EXPORT_SYMBOL_GPL. Christoph Hellwig , que concorda 100% com essa proposta, mas tal mudança não será aceita por Linus Torvalds, pois levará à inacessibilidade para drivers proprietários da maior parte das subsistemas do núcleo, devido ao fato de que, ao desenvolver drivers, símbolos básicos exportados sob GPL são incorporados.
A alteração foi proposta em resposta a um engenheiro do Facebook com uma série de patches implementando um novo subsistema netgpu, permitindo a organização de troca direta de dados (DMA
zero-copy) entre a placa de rede e a GPU, enquanto a manipulação do protocolo é realizada pela CPU. dos desenvolvedores foi provocada pela implementações apenas para drivers proprietários da NVIDIA através da camada GPL fornecida por esses drivers. Em resposta a autor dos patches , que o subsistema não está vinculado à NVIDIA e seu suporte pode ser garantido também para interfaces de programação de GPUs AMD e Intel. No final, a promoção do netgpu no núcleo foi considerada impossível até que aparecesse suporte funcional baseado em drivers livres, como AMDGPU, Intel i915 ou Nouveau.
Fonte: opennet.ru
