CVE-2026-46196 in Linux
Resumen
por VulDB • 2026-05-28
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
tracepoint: equilibrar regfunc() ante el fallo de func_add() en tracepoint_add_func()
Cuando un tracepoint experimenta la transición de 0 a 1, tracepoint_add_func() invoca a ext->regfunc() del subsistema antes de intentar instalar la nueva sonda mediante func_add(). Si func_add() falla posteriormente (por ejemplo, cuando allocate_probes() no puede asignar un nuevo array de sondas bajo presión de memoria y devuelve -ENOMEM), la función devuelve el error sin llamar a ext->unregfunc() correspondiente, dejando los efectos secundarios de regfunc() sin que haya una sonda instalada que los justifique.
Para los tracepoints de syscall, esto es particularmente desagradable: syscall_regfunc() incrementa sys_tracepoint_refcount y establece SYSCALL_TRACEPOINT en cada tarea. Tras un fallo filtrado, el contador de referencias queda atascado en un valor distinto de cero sin ningún consumidor, y cada tarea continúa soportando la sobrecarga de entrada/salida de la traza de syscall hasta el reinicio. Otros subsistemas que proporcionan pares regfunc()/unregfunc() presentan estados persistentes con un alcance similar.
Se replica la limpieza existente de 1 a 0 y se llama a ext->unregfunc() en la ruta de error de func_add(), condicionada por la misma condición utilizada allí, de modo que el desenrollado sea simétrico con el registro.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.