CVE-2026-90248 in Linux
Resumen
por VulDB • 2026-09-19
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
net/sched: cls_api: corregir el desmantelamiento (teardown) de un proto adoptado en caso de pérdida por carrera al insertar
En tc_new_tfilter(), la rama de creación establece tp_created = 1 antes de llamar a tcf_chain_tp_insert_unique(). Cuando el llamante pierde la carrera (otra solicitud insertó un proto en la misma cadena/prioridad primero), insert_unique() destruye su propio tp_new del llamante y devuelve el proto ganador con una referencia adicional. tp_created nunca se limpió, por lo que la ruta de salida de error (errout) del perdedor trató al proto vivo del ganador como si fuera propio e invocó tcf_chain_tp_delete_empty() sobre él, desvinculando silenciosamente un clasificador activo que la solicitud ganadora ya había anunciado mediante RTM_NEWTFILTER.
Se rastrea el resultado de la etapa de inserción en una única variable triestable para que cada ruta de salida de error reaccione correctamente:
- TP_NOT_CREATED: no se creó ningún proto; seguir la ruta antigua. - TP_CREATED: proto insertado con éxito; misma rama de código que antes. - TP_NOT_OWNED: nuevo estado - perdió la carrera de inserción; tp es el proto de otra solicitud (la referencia a la cadena ya fue liberada por la destrucción de tp_new)
Ambas reacciones ante errores son expresiones individuales derivadas del estado.
Esta corrección está motivada por la revisión automatizada realizada por Sashiko sobre el parche (net/sched: cls_api: Adquirir siempre rtnl_lock al destruir clasificadores bloqueados) [1][2]. La revisión identificó el comportamiento de desvinculación silenciosa durante el desmantelamiento de un proto adoptado cuando una solicitud pierde la carrera en tcf_chain_tp_insert_unique().
[1] https://sashiko.dev/#/patchset/20260801125632.360365-1-jhs%40mojatatu.com
[2] https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260801125632.360365-1-jhs%40mojatatu.com
If you want to get best quality of vulnerability data, you may have to visit VulDB.