CVE-2024-42245

In the Linux kernel, the following vulnerability has been resolved: Revert "sched/fair: Make sure to try to detach at least one movable task" This reverts commit b0defa7ae03ecf91b8bfd10ede430cff12fcbd06. b0defa7ae03ec changed the load balancing logic to ignore env.max_loop if all tasks examined to that point were pinned. The goal of the patch was to make it more likely to be able to detach a task buried in a long list of pinned tasks. However, this has the unfortunate side effect of creating an O(n) iteration in detach_tasks(), as we now must fully iterate every task on a cpu if all or most are pinned. Since this load balance code is done with rq lock held, and often in softirq context, it is very easy to trigger hard lockups. We observed such hard lockups with a user who affined O(10k) threads to a single cpu. When I discussed this with Vincent he initially suggested that we keep the limit on the number of tasks to detach, but increase the number of tasks we can search. However, after some back and forth on the mailing list, he recommended we instead revert the original patch, as it seems likely no one was actually getting hit by the original issue.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*

History

08 Aug 2024, 14:53

Type Values Removed Values Added
CWE CWE-667
First Time Linux linux Kernel
Linux
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
References () https://git.kernel.org/stable/c/0fa6dcbfa2e2b97c1e6febbea561badf0931a38b - () https://git.kernel.org/stable/c/0fa6dcbfa2e2b97c1e6febbea561badf0931a38b - Patch
References () https://git.kernel.org/stable/c/1e116c18e32b035a2d1bd460800072c8bf96bc44 - () https://git.kernel.org/stable/c/1e116c18e32b035a2d1bd460800072c8bf96bc44 - Patch
References () https://git.kernel.org/stable/c/2feab2492deb2f14f9675dd6388e9e2bf669c27a - () https://git.kernel.org/stable/c/2feab2492deb2f14f9675dd6388e9e2bf669c27a - Patch
References () https://git.kernel.org/stable/c/d467194018dd536fe6c65a2fd3aedfcdb1424903 - () https://git.kernel.org/stable/c/d467194018dd536fe6c65a2fd3aedfcdb1424903 - Patch
Summary
  • (es) En el kernel de Linux, se resolvió la siguiente vulnerabilidad: Revertir "programado/justo: asegúrese de intentar desconectar al menos una tarea móvil". Esto revierte el commit b0defa7ae03ecf91b8bfd10ede430cff12fcbd06. b0defa7ae03ec cambió la lógica de equilibrio de carga para ignorar env.max_loop si todas las tareas examinadas hasta ese punto estaban fijadas. El objetivo del parche era hacer que fuera más probable poder separar una tarea oculta en una larga lista de tareas fijadas. Sin embargo, esto tiene el desafortunado efecto secundario de crear una iteración O(n) en detach_tasks(), ya que ahora debemos iterar completamente cada tarea en una CPU si todas o la mayoría están fijadas. Dado que este código de equilibrio de carga se realiza con el bloqueo rq mantenido y, a menudo, en el contexto de softirq, es muy fácil activar bloqueos duros. Observamos bloqueos tan difíciles con un usuario que afinó O(10k) subprocesos a una sola CPU. Cuando hablé de esto con Vincent, inicialmente sugirió que mantuviéramos el límite en la cantidad de tareas para separar, pero que incrementáramos la cantidad de tareas que podemos buscar. Sin embargo, después de algunos intercambios en la lista de correo, recomendó que revirtiéramos el parche original, ya que parece probable que nadie se haya visto afectado por el problema original.

07 Aug 2024, 16:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-08-07 16:15

Updated : 2024-08-08 14:53


NVD link : CVE-2024-42245

Mitre link : CVE-2024-42245

CVE.ORG link : CVE-2024-42245


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-667

Improper Locking