Linus Torvalds ha fusionado un cambio de código significativo en el kernel de Linux 7.3-rc2, convirtiendo más llamadas a la función `kmalloc()` a la familia de funciones más nueva `kmalloc_obj()`. Este esfuerzo a nivel de todo el árbol, liderado por el desarrollador de Linux Kees Cook, tiene como objetivo mejorar la asignación de memoria dentro del kernel.
La conversión, realizada utilizando un script impulsado por Coccinelle, afecta a cientos de archivos y a más de 600 líneas de código. Aborda transiciones incompletas anteriores a `kmalloc_obj()` y amplía su uso desde su introducción en Linux 7.0. Las funciones `kmalloc_obj()` ofrecen varias ventajas sobre `kmalloc()`, incluyendo la eliminación de la necesidad de `sizeof()` y el nombre del tipo, permitiendo la introspección interna de los tipos asignados, y allanando el camino para futuras mejoras como el endurecimiento y las opciones conscientes de la alineación.
Según un commit que presentaba las funciones `kmalloc_obj()` a principios de este año, el cambio reemplaza los idiomáticos comunes de asignación. Por ejemplo, `ptr = kmalloc(sizeof(*ptr), gfp);` se convierte en `ptr = kmalloc_obj(*ptr, gfp);`. El principal beneficio es la eliminación de la necesidad de `sizeof()` y el nombre del tipo, al tiempo que se aplican los tipos de asignación: las funciones devuelven un puntero al tipo del primer argumento. El nombre del tipo aún se puede utilizar para asignaciones indirectas. Además, las nuevas funciones permiten que las variables se declaren utilizando `__auto_type`, como `__auto_type ptr = kmalloc_obj(struct foo, gfp);`.
Leer la cobertura original
💬 Comentarios
📜 Política de comentarios