From cd0413bfacf262b258029cbccbeadf99a7fef2b4 Mon Sep 17 00:00:00 2001 From: Roger Pau Monne Date: Thu, 30 Apr 2026 13:46:47 +0200 Subject: [PATCH] x86/cpu: identify uninitialized CPU data using BAD_APICID MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Uninitialized cpu_data[] entries have the apicid field set to BAD_APICID, not boot_cpu_data.apicid. Fix the check in cpu_smpboot_free() to use the correct condition. Fixes: 7126b7f806d5 ("x86/CPU: re-work populating of cpu_data[]") Signed-off-by: Roger Pau Monné Reviewed-by: Teddy Astie Reviewed-by: Andrew Cooper --- xen/arch/x86/smpboot.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c index 491cbbba33..ff05955bae 100644 --- a/xen/arch/x86/smpboot.c +++ b/xen/arch/x86/smpboot.c @@ -961,8 +961,7 @@ static void cpu_smpboot_free(unsigned int cpu, bool remove) * In that case the socket number cannot be relied upon, but the respective * socket_cpumask[] slot also wouldn't have been set. */ - if ( c[cpu].apicid != boot_cpu_data.apicid && - cpumask_empty(socket_cpumask[socket]) ) + if ( c[cpu].apicid != BAD_APICID && cpumask_empty(socket_cpumask[socket]) ) { xfree(socket_cpumask[socket]); socket_cpumask[socket] = NULL;