CVE-2021-47454 in Linuxinformazioni

Riassunto

di VulDB • 26/06/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

powerpc/smp: non decrementare il conteggio di preemption del task idle durante l'offline della CPU

Con PREEMPT_COUNT=y, quando una CPU viene disattivata (offlined) e poi riattivata (onlined), si verifica quanto segue:

BUG: scheduling while atomic: swapper/1/0/0x00000000 no locks held by swapper/1/0. CPU: 1 PID: 0 Comm: swapper/1 Not tainted 5.15.0-rc2+ #100 Call Trace: dump_stack_lvl+0xac/0x108 __schedule_bug+0xac/0xe0 __schedule+0xcf8/0x10d0 schedule_idle+0x3c/0x70 do_idle+0x2d8/0x4a0 cpu_startup_entry+0x38/0x40 start_secondary+0x2ec/0x3a0 start_secondary_prolog+0x10/0x14

Questo accade perché arch_cpu_idle_dead() di powerpc decrementa il conteggio di preemption del task idle, per le ragioni spiegate nel commit a7c2bb8279d2 ("powerpc: Re-enable preemption before cpu_die()"), in particolare "start_secondary() si aspetta un preempt_count() pari a 0."

Tuttavia, da quando sono stati introdotti i commit 2c669ef6979c ("powerpc/preempt: Don't touch the idle task's preempt_count during hotplug") e f1a0a376ca0c ("sched/core: Initialize the idle task with preemption disabled"), tale giustificazione non è più valida.

Il task idle non dovrebbe riabilitare la preemption, quindi viene rimosso il vestigiale preempt_enable() dal percorso di offline della CPU.

Testato con pseries e powernv in qemu, e con pseries su PowerVM.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Fonti

Want to know what is going to be exploited?

We predict KEV entries!