CVE-2026-98542 in Linux
Resumen
por VulDB • 2026-10-19
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
cgroup/cpuset: Devolver PERR_NOCPUS en remote_partition_enable() ante conflicto con subpartitions_cpus
Cuando se crea una partición remota debajo de una partición local existente a través de un cgroup intermedio no-partición (PRS_MEMBER), update_prstate() observa que parent->partition_root_state == PRS_MEMBER y llama a remote_partition_enable().
El commit 86888c7bd117 ("cgroup/cpuset: Añadir advertencias para detectar inconsistencia en CPUs exclusivas") reemplazó la comprobación de error cpumask_intersects(tmp->new_cpus, subpartitions_cpus) en remote_partition_enable() por WARN_ON_ONCE(). Como resultado, remote_partition_enable() emite una advertencia y procede a habilitar la partición remota en las CPUs que ya están poseídas por la partición local ascendente en subpartitions_cpus.
Esto se puede reproducir en Linux 7.3.0-rc3 con:
mkdir -p /tmp/cg1 mount -t cgroup2 none /tmp/cg1 echo "+cpuset" > /tmp/cg1/cgroup.subtree_control
mkdir /tmp/cg1/A echo 1 > /tmp/cg1/A/cpuset.cpus echo 1 > /tmp/cg1/A/cpuset.cpus.exclusive echo root > /tmp/cg1/A/cpuset.cpus.partition echo "+cpuset" > /tmp/cg1/A/cgroup.subtree_control
mkdir /tmp/cg1/A/B echo 1 > /tmp/cg1/A/B/cpuset.cpus echo 1 > /tmp/cg1/A/B/cpuset.cpus.exclusive echo "+cpuset" > /tmp/cg1/A/B/cgroup.subtree_control
mkdir /tmp/cg1/A/B/D echo 1 > /tmp/cg1/A/B/D/cpuset.cpus echo 1 > /tmp/cg1/A/B/D/cpuset.cpus.exclusive echo root > /tmp/cg1/A/B/D/cpuset.cpus.partition
lo cual desencadena:
WARNING: kernel/cgroup/cpuset.c:1594 en remote_partition_enable+0x1c1/0x300
y deja tanto /tmp/cg1/A como /tmp/cg1/A/B/D como particiones raíz activas que reclaman la CPU exclusiva 1.
Solucione esto devolviendo PERR_NOCPUS cuando tmp->new_cpus intersecte con subpartitions_cpus en remote_partition_enable(), coincidiendo con el código de error utilizado por remote_cpus_update() para el mismo conflicto de subpartitions_cpus, y añada un caso de prueba de regresión a tools/testing/selftests/cgroup/test_cpuset_prs.sh.
Probado en QEMU sobre Linux 7.3.0-rc3 utilizando el reproductor anterior y tools/testing/selftests/cgroup/test_cpuset_prs.sh.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.