Si bien en estos días Linus Torvalds se ocupa principalmente de introducir código nuevo en el kernel de Linux y de ser un guardián en lugar de desarrollar activamente el nuevo código del kernel, para el Linux 6.4 en desarrollo se encontró haciendo un poco de codificación.
Como se señaló la semana pasada, él personalmente se dedicó a limpiar el código de copia de memoria x86 para Linux 6.4. Esta semana fusionó más de su propio código, ya que se mostró en desacuerdo con parte del código fusionado por los ingenieros de Intel como parte de su habilitación de enmascaramiento de direcciones lineales.
Durante los días de Linux 6.2 a fines del año pasado, Linus rechazó el código Intel LAM en ese momento por varios problemas técnicos. Luego, Intel lo modificó para Linux 6.4.
Esta vez Linus fusionó Intel LAM en Linux 6.4 como esta nueva función de CPU para permitir que el espacio del usuario almacene metadatos dentro de algunos bits de punteros sin enmascararlos antes de usarlos. Intel LAM, como Arm TBI, puede ser útil para máquinas virtuales, creación de perfiles/desinfectantes/etiquetado y otras aplicaciones. Pero esta vez hubo un código menos que ideal que él personalmente se encargó de arreglar.
Linus escribió en una nueva combinar el viernes:
Fusionar mi rama de actualizaciones x86 uaccess.
Las actualizaciones de LAM (“Máscara de dirección lineal”) en esta versión me hicieron sentir descontento con la forma en que se hizo”access_ok()”, y en realidad resultó que también tenía un par de pequeños errores. Esta es mi limpieza del código:
-use el bit de signo del puntero __user en lugar de enmascarar la dirección y compararla con el rango TASK_SIZE.
Ya hicimos esta parte para el lado get/put_user(), pero’access_ok()’hizo la ingenua”verificación de máscara y rango”, que no solo genera un código desagradable, sino que también terminó significando que __access_ok en sí mismo no hizo un buen trabajo, por lo que copy_from_user_nmi() no hizo bien la verificación.
-mueva todo el código que es de 64 bits solo a la versión de 64 bits del archivo de encabezado, para que no contaminemos innecesariamente el código x86 compartido y haga que parezca que LAM podría funcionar en 32 bits también.
-corrige un error en el enmascaramiento de direcciones (eso no termina de importar: en este caso, la solución fue simplemente eliminar el código con errores por completo).
-un par de limpiezas triviales y comentarios agregados sobre las reglas de access_ok().
Así que Intel LAM sigue listo para Linux 6.4 y Torvalds reelaborado alrededor de cien líneas de código para limpiarlo.
Ahora, el espacio de usuario de Linux se prepara para usar Intel LAM.