Linux 7.3‑rc2 migra cientos de llamadas kmalloc a kmalloc_obj
El último merge de Linus Torvalds convierte más de 600 usos de kmalloc() en kmalloc_obj() en la rama 7.3‑rc2.
Linus Torvalds incorporó a la rama de desarrollo de Linux 7.3‑rc2 un merge que reemplaza gran parte de las llamadas a kmalloc() por la familia más reciente kmalloc_obj(). El cambio, impulsado por Kees Cook con un script basado en Coccinelle, afecta a cientos de archivos y modifica más de 600 líneas de código.
La sustitución elimina la necesidad de usar sizeof() o el nombre del tipo en la asignación. En su lugar, la función recibe directamente una referencia al tipo, lo que permite al asignador inferir el tamaño y, a futuro, aplicar endurecimiento o alineación específica por tipo. Además, las nuevas funciones devuelven un puntero tipado en vez de void *, evitando conversiones implícitas.
Ejemplos de la transformación son:
ptr = kmalloc(sizeof(*ptr), gfp);→ptr = kmalloc_obj(*ptr, gfp);ptr = kmalloc_array(count, sizeof(*ptr), gfp);→ptr = kmalloc_objs(*ptr, count, gfp);
Con estas mejoras, los desarrolladores pueden declarar variables con __auto_type y el kernel podrá introspeccionar el tipo alocada, abriendo la puerta a decisiones de alineación y aleatorización más inteligentes.
El commit que introduce la mayor parte de la conversión está disponible en el repositorio oficial de Linux commit. La integración completa del merge se documenta en el segundo commit del mismo proceso merge.
Esta migración es importante porque reduce la carga cognitiva al escribir código de asignación y prepara la base para futuras mejoras de seguridad y rendimiento en el asignador de memoria del kernel.