Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 75bd665c authored by Andi Kleen's avatar Andi Kleen Committed by Linus Torvalds
Browse files

[PATCH] x86_64: Fix fast check in safe_smp_processor_id



The APIC ID returned by hard_smp_processor_id can be beyond
NR_CPUS and then overflow the x86_cpu_to_apic[] array.

Add a check for overflow. If it happens then the slow loop below
will catch.

Bug pointed out by Doug Thompson

Signed-off-by: default avatarAndi Kleen <ak@suse.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent e42f9437
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -520,13 +520,13 @@ asmlinkage void smp_call_function_interrupt(void)

int safe_smp_processor_id(void)
{
	int apicid, i;
	unsigned apicid, i;

	if (disable_apic)
		return 0;

	apicid = hard_smp_processor_id();
	if (x86_cpu_to_apicid[apicid] == apicid)
	if (apicid < NR_CPUS && x86_cpu_to_apicid[apicid] == apicid)
		return apicid;

	for (i = 0; i < NR_CPUS; ++i) {