CVE-2026-98542 in Linux
Riassunto
di VulDB • 19/10/2026
Nel kernel di Linux, è stata risolta la seguente vulnerabilità:
cgroup/cpuset: Restituire PERR_NOCPUS in remote_partition_enable() in caso di conflitto con subpartitions_cpus
Quando viene creata una partizione remota sotto una partizione locale esistente tramite un cgroup intermedio non-partition (PRS_MEMBER), update_prstate() rileva parent->partition_root_state == PRS_MEMBER e chiama remote_partition_enable().
Il commit 86888c7bd117 ("cgroup/cpuset: Aggiungere avvisi per rilevare incongruenze nelle CPU esclusive") ha sostituito il controllo di errore cpumask_intersects(tmp->new_cpus, subpartitions_cpus) in remote_partition_enable() con WARN_ON_ONCE(). Di conseguenza, remote_partition_enable() emette un avviso e procede ad abilitare la partizione remota su CPU che sono già possedute dalla partizione locale antenata in subpartitions_cpus.
Ciò può essere riprodotto su 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
il che innesca:
WARNING: kernel/cgroup/cpuset.c:1594 at remote_partition_enable+0x1c1/0x300
e lascia sia /tmp/cg1/A che /tmp/cg1/A/B/D come partizioni root attive che rivendicano la CPU esclusiva 1.
Risolvere il problema restituendo PERR_NOCPUS quando tmp->new_cpus interseca subpartitions_cpus in remote_partition_enable(), corrispondente al codice di errore utilizzato da remote_cpus_update() per lo stesso conflitto con subpartitions_cpus, e aggiungere un caso di test regression a tools/testing/selftests/cgroup/test_cpuset_prs.sh.
Testato su QEMU su Linux 7.3.0-rc3 utilizzando il riproduttore sopra indicato e 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.