Vulnerabilidad en kernel de Linux (CVE-2025-21897)
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
01/04/2025
Última modificación:
01/04/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: sched_ext: Fix pick_task_scx() picking nonqueued task when it is called without balance() a6250aa251ea ("sched_ext: Handle cases where pick_task_scx() is called without previous balance_scx()") añadió un workaround para gestionar los casos donde pick_task_scx() se llama sin preceder a balance_scx(), lo cual se debe a un error de clase fair donde pick_taks_fair() puede devolver NULL después de un retorno verdadero de balance_fair(). El workaround detecta cuándo se llama a pick_task_scx() sin preceder a balance_scx() y emula SCX_RQ_BAL_KEEP y activa el kicking para evitar el estancamiento. Desafortunadamente, el código del workaround estaba probando si @prev estaba en SCX para decidir si mantener la tarea en ejecución. Esto es incorrecto ya que la tarea puede estar en SCX pero ya no se puede ejecutar. Esto podría provocar que pick_task_scx() devuelva una tarea no ejecutable, lo que causa confusiones y fallos interesantes. Por ejemplo, un modo de fallo común es que la tarea termine en el estado (!on_rq && on_cpu), lo que puede provocar que los posibles reactivadores entren en bucles de ocupación, lo que puede fácilmente provocar interbloqueos. Solucione esto comprobando si @prev tiene SCX_TASK_QUEUED definido. Esto hace que @prev_on_scx solo se use en un lugar. Abra el código para su uso y mejore el comentario.