mirror of https://github.com/torvalds/linux.git
x86/smp/32: Remove safe_smp_processor_id()
The safe_smp_processor_id() function was originally implemented in:
dc2bc768a0 ("stack overflow safe kdump: safe_smp_processor_id()")
to mitigate the CPU number corruption on a stack overflow. At the time,
x86-32 stored the CPU number in thread_struct, which was located at the
bottom of the task stack and thus vulnerable to an overflow.
The CPU number is now located in percpu memory, so this workaround
is no longer needed.
Signed-off-by: Brian Gerst <brgerst@gmail.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Uros Bizjak <ubizjak@gmail.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Link: https://lore.kernel.org/r/20250303170115.2176553-1-brgerst@gmail.com
This commit is contained in:
parent
399fd7a264
commit
604ea3e90b
|
|
@ -12,7 +12,6 @@
|
|||
#ifndef CONFIG_SMP
|
||||
#define cpu_physical_id(cpu) boot_cpu_physical_apicid
|
||||
#define cpu_acpi_id(cpu) 0
|
||||
#define safe_smp_processor_id() 0
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
|
|
|
|||
|
|
@ -136,12 +136,6 @@ __visible void smp_call_function_single_interrupt(struct pt_regs *r);
|
|||
#define raw_smp_processor_id() this_cpu_read(pcpu_hot.cpu_number)
|
||||
#define __smp_processor_id() __this_cpu_read(pcpu_hot.cpu_number)
|
||||
|
||||
#ifdef CONFIG_X86_32
|
||||
extern int safe_smp_processor_id(void);
|
||||
#else
|
||||
# define safe_smp_processor_id() smp_processor_id()
|
||||
#endif
|
||||
|
||||
static inline struct cpumask *cpu_llc_shared_mask(int cpu)
|
||||
{
|
||||
return per_cpu(cpu_llc_shared_map, cpu);
|
||||
|
|
|
|||
|
|
@ -287,34 +287,4 @@ void default_send_IPI_mask_logical(const struct cpumask *cpumask, int vector)
|
|||
__default_send_IPI_dest_field(mask, vector, APIC_DEST_LOGICAL);
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
static int convert_apicid_to_cpu(u32 apic_id)
|
||||
{
|
||||
int i;
|
||||
|
||||
for_each_possible_cpu(i) {
|
||||
if (per_cpu(x86_cpu_to_apicid, i) == apic_id)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
int safe_smp_processor_id(void)
|
||||
{
|
||||
u32 apicid;
|
||||
int cpuid;
|
||||
|
||||
if (!boot_cpu_has(X86_FEATURE_APIC))
|
||||
return 0;
|
||||
|
||||
apicid = read_apic_id();
|
||||
if (apicid == BAD_APICID)
|
||||
return 0;
|
||||
|
||||
cpuid = convert_apicid_to_cpu(apicid);
|
||||
|
||||
return cpuid >= 0 ? cpuid : 0;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ void native_machine_crash_shutdown(struct pt_regs *regs)
|
|||
x86_platform.guest.enc_kexec_begin();
|
||||
x86_platform.guest.enc_kexec_finish();
|
||||
|
||||
crash_save_cpu(regs, safe_smp_processor_id());
|
||||
crash_save_cpu(regs, smp_processor_id());
|
||||
}
|
||||
|
||||
#if defined(CONFIG_KEXEC_FILE) || defined(CONFIG_CRASH_HOTPLUG)
|
||||
|
|
|
|||
|
|
@ -921,7 +921,7 @@ void nmi_shootdown_cpus(nmi_shootdown_cb callback)
|
|||
return;
|
||||
|
||||
/* Make a note of crashing cpu. Will be used in NMI callback. */
|
||||
crashing_cpu = safe_smp_processor_id();
|
||||
crashing_cpu = smp_processor_id();
|
||||
|
||||
shootdown_callback = callback;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue