Christoph Hellwig, un reconocido desarrollador del núcleo de Linux que alguna vez formó parte del comité técnico de Linux Foundation y fue demandante en relación con la GPL con VMware, endurecer la protección contra el enlace de controladores propietarios con componentes del núcleo de Linux exportados únicamente para módulos bajo licencia GPL. Para eludir la restricción sobre la exportación de símbolos GPL, los fabricantes de controladores propietarios utilizan un módulo intermediario cuyo código es abierto y se distribuye bajo la licencia GPLv2, pero cuya función se limita a traducir el acceso del controlador propietario a los API necesarios del núcleo, que están prohibidos para su uso desde código propietario directamente.
Para bloquear tal maniobra, Christoph Hellwig parches para el núcleo de Linux que aseguran la herencia de las banderas relacionadas con la exportación de símbolos GPL. La propuesta consiste en heredar la bandera TAINT_PROPRIETARY_MODULE en todos los módulos que importen símbolos de módulos con esta bandera. De este modo, si un módulo intermediario GPL intenta importar símbolos de un módulo no GPL, el módulo GPL heredará la etiqueta TAINT_PROPRIETARY_MODULE y no podrá acceder a los componentes del núcleo disponibles solo para módulos bajo licencia GPL, incluso si el módulo había importado anteriormente símbolos de la categoría «gplonly».
En la discusión también se presentó de bloqueo inverso: si un módulo importa símbolos EXPORT_SYMBOL_GPL, cualquier símbolo exportado por dicho módulo no debe ser importado por módulos que no declaren explícitamente su compatibilidad con GPL. Es decir, si un módulo importa símbolos EXPORT_SYMBOL_GPL, todos sus símbolos exportados deben ser tratados como EXPORT_SYMBOL_GPL. Christoph Hellwig , está 100% de acuerdo con esta propuesta, pero este cambio no será aprobado por Linus Torvalds, ya que resultará en la inaccesibilidad para los controladores propietarios de la mayor parte de las subsistemas del núcleo, debido a que durante el desarrollo de controladores se utilizan símbolos básicos, exportados bajo GPL.
El cambio se propuso en respuesta a un ingeniero de Facebook sobre una serie de parches que implementan un nuevo subsistema netgpu, que permite organizar el intercambio directo de datos (DMA
copia cero) entre la tarjeta de red y la GPU, realizando el procesamiento del protocolo mediante el CPU. de los desarrolladores provocó la implementación solo para controladores propietarios de NVIDIA a través de la capa GPL proporcionada por dichos controladores. En respuesta a el autor de los parches , afirmó que el subsistema no está vinculado a NVIDIA y su soporte puede proporcionarse también para las interfaces de programación de GPUs AMD e Intel. En consecuencia, la promoción de netgpu en el núcleo fue considerada imposible hasta que haya soporte funcional basado en controladores libres, como AMDGPU, Intel i915 o Nouveau.
Fuente: opennet.ru
