Linux 7.4 retira las funciones inseguras __get_user y __put_user

Última actualización: octubre 23, 2026
Autor: Isaac
  • Linux 7.4 elimina del código genérico las primitivas __get_user() y __put_user() y completa su retirada en x86 y x86_64.
  • Esas funciones no validaban por sí mismas el rango de direcciones de usuario, lo que dejaba margen a fallos de seguridad y a usos más lentos que la alternativa correcta.
  • Las regiones de acceso con ámbito y las funciones get_user() y put_user() cubren las transferencias entre aplicaciones y núcleo sin conservar los atajos antiguos.
  • Quedan restos en algunas arquitecturas; ARM64 ya redirigía esas operaciones a las variantes actuales y el impacto diario para el usuario es limitado.

Linux 7.4 y cambios en el kernel

La versión 7.4 del kernel de Linux ha incorporado una limpieza que afecta al modo en que el núcleo trata ciertos intercambios de datos con los programas. Linus Torvalds ha integrado la retirada de __get_user() y __put_user() del código común y ha cerrado su presencia en x86 y x86_64. No se trata de una función visible para el usuario, sino de una pieza interna que llevaba tiempo señalada como riesgo.

El movimiento no deja al sistema sin mecanismos para copiar valores entre el espacio de usuario y el kernel. Las funciones get_user() y put_user() siguen disponibles y las nuevas regiones de acceso con ámbito permiten agrupar operaciones con controles. La diferencia está en que las variantes retiradas asumían que otra parte del código ya había validado la dirección de memoria.

Fallo de seguridad en Linux
Related article:
Nuevas vulnerabilidades en el kernel Linux obligan a actualizar sistemas

Qué cambia en el acceso a memoria

Las primitivas con doble guion bajo servían para mover un dato sencillo entre la memoria de una aplicación y la zona privilegiada del sistema. Su problema era que no comprobaban por sí mismas el rango de direcciones, de modo que quien las llamaba debía haber revisado antes el puntero. Cuando esa revisión faltaba, el núcleo podía acabar operando sobre una zona no permitida.

La operación se conoció el 21 de octubre de 2026 y encaja en el ciclo de desarrollo de Linux 7.4. El código genérico deja de invocar esa familia y x86/x86_64 completan la retirada de la interfaz. Las funciones normales no desaparecen: se mantienen para las transferencias que sí incorporan las comprobaciones necesarias.

Por qué se habían mantenido durante años

Durante mucho tiempo se defendió su uso por rendimiento. Si un fragmento hacía varias lecturas sobre una misma base, se pagaba una comprobación inicial y después se empleaban accesos rápidos sin repetirla. En el hardware actual ese cálculo ya no sale a cuenta, porque el coste relevante está en activar y desactivar el acceso al espacio de usuario.

Linux
Related article:
Kernel Linux: avalancha de vulnerabilidades y el impacto de la IA

Torvalds ha señalado que, mal empleadas, esas variantes resultaban más lentas que la alternativa correcta y además inseguras. El ahorro que prometían quedó desfasado cuando cambiaron el diseño del núcleo y las capacidades de los procesadores. La limpieza no busca arañar una décima de rendimiento, sino quitar de en medio una interfaz que invitaba a escribir código con apariencia de optimización.

Las regiones de acceso con ámbito

La pieza que facilita el paso son las regiones de acceso con ámbito, impulsadas por Thomas Gleixner. Estas regiones abren y cierran el acceso de forma controlada, así que la validación queda cubierta tanto si la operación termina bien como si aparece un error. Ese enfoque reduce la necesidad de recurrir a las variantes sin comprobación.

La transición se ha apoyado en las funciones modernas y en la conversión de llamadas antiguas. El propio Torvalds preparó un ejemplo de cómo adaptar el código y el patrón se extendió a numerosos puntos del árbol. El resultado es que el código común deja de usar la familia con doble guion bajo y la retirada se completa donde más se empleaba.

IA en Linux
Related article:
Linus Torvalds defiende el uso de IA en el kernel de Linux

El papel de la IA en la conversión

Una parte del trabajo se hizo con ayuda de Claude Code, una herramienta que Torvalds ha comparado con una versión más sofisticada de un script de Coccinelle. La IA sirvió para localizar patrones y proponer sustituciones, no para decidir el rumbo técnico del cambio. La revisión y la integración siguieron correspondiendo al mantenedor.

Esa distinción importa porque la conversión afecta a código sensible. Automatizar la búsqueda de usos antiguos acelera la limpieza, pero no elimina la necesidad de comprobar cada adaptación. El mensaje que acompaña al cambio deja claro que la decisión y la fusión son responsabilidad de Torvalds.

Qué queda pendiente y a quién afecta

El alcance no es uniforme en todas las arquitecturas. El borrado completo de la interfaz se produce en x86, mientras que el código genérico deja de llamar a esas primitivas y algunos puertos conservan restos. En ARM64 las variantes heredadas ya remitían a get_user() y put_user(), por lo que no arrastraban el mismo peligro.

Para quien usa Linux en un portátil o un servidor, el cambio no debería notarse en el día a día. Las transferencias entre aplicaciones y núcleo continúan funcionando por las vías seguras. La consecuencia práctica está en el desarrollo: el kernel deja de ofrecer una puerta que permitía escribir código aparentemente rápido pero con menos controles.

Linus Torvalds IA
Related article:
Linus Torvalds defiende el uso de IA en Linux y reta a los críticos a crear su propio fork

La retirada de __get_user() y __put_user() en Linux 7.4 se entiende mejor como una tarea de mantenimiento que como una revolución visible. El núcleo elimina una interfaz histórica, conserva las funciones normales, apoya la conversión en regiones de acceso con ámbito y deja pendientes concretos en otras arquitecturas. El episodio también muestra cómo el trabajo del kernel combina revisión humana, patrones de código y herramientas de IA, sin que estas últimas sustituyan la decisión técnica.