Portátil, despierta: un parche para acelerar Linux provocó un colapso del sistema

Portátil, despierta: un parche para acelerar Linux provocó un colapso del sistema

¿Por qué los desarrolladores decidieron retirar el módulo de memoria ROX problemático?

image

Dificultades inesperadas surgieron para los usuarios de Linux después de que se implementaran cambios en el núcleo destinados a mejorar su rendimiento. Los desarrolladores están desactivando apresuradamente la actualización problemática para evitar que aparezca en la versión estable de Linux 6.13, que se lanzará el 19 de enero.

Todo comenzó en noviembre del año pasado, cuando un ingeniero de Microsoft propuso cambiar el principio de funcionamiento de los módulos del núcleo. Según su idea, Linux x86_64 debía comenzar a usar páginas de memoria grandes del tipo ROX (read only execute) para almacenar código ejecutable. Esta solución tenía el potencial de reducir la carga en el búfer de traducción asociativa de comandos y acelerar significativamente el rendimiento del sistema.

Sin embargo, las primeras pruebas revelaron problemas graves. Resultó que el nuevo código no era compatible con sistemas donde está activada la tecnología Control Flow Integrity (CFI). Además, en los portátiles Intel dejó de funcionar correctamente la salida del modo de hibernación.

El ingeniero de Intel, Peter Zijlstra, reaccionó a la situación añadiendo una corrección en el repositorio tip/tip.git, en la rama "x86/urgent". Este parche será enviado pronto a Linus Torvalds junto con una solicitud de actualización para x86/urgent. En los comentarios del código, Zijlstra explicó que EXECMEM_ROX no solo complicó enormemente la estructura del archivo alternative.c, sino que también introdujo errores que afectaron el funcionamiento de algunas variantes de CFI. Aunque el desarrollador Mike ya está trabajando en las correcciones necesarias, la funcionalidad aún es demasiado inestable para ser utilizada.

Una de las mayores críticas en la comunidad fue el hecho de que los cambios se introdujeron en la rama principal del núcleo sin consultar a los mantenedores de la arquitectura x86/x86_64. Según el experimentado desarrollador de Linux en AMD, Borislav Petkov, el código no solo se integró sin las aprobaciones necesarias, sino que ni siquiera se eliminó después de que se descubriera el error.

Finalmente, se tomó la decisión de desactivar temporalmente el soporte para EXECMEM_ROX, aunque manteniendo el código. En la configuración se añadió un ajuste que impide habilitar la funcionalidad problemática al compilar el núcleo para la arquitectura x86_64. La versión mejorada de EXECMEM_ROX se presentará en el próximo ciclo, Linux 6.14.

¿Estás cansado de que Internet sepa todo sobre ti?

¡Únete a nosotros y hazte invisible!