mirror of
https://github.com/torvalds/linux.git
synced 2026-05-21 05:18:45 +02:00
x86/boot/64: Strip percpu address space when setting up GDT descriptors
init_per_cpu_var() returns a pointer in the percpu address space while
rip_rel_ptr() expects a pointer in the generic address space.
When strict address space checks are enabled, GCC's named address space
checks fail:
asm.h:124:63: error: passing argument 1 of 'rip_rel_ptr' from
pointer to non-enclosed address space
Add a explicit cast to remove address space of the returned pointer.
Fixes: 11e36b0f7c ("x86/boot/64: Load the final kernel GDT during early boot directly, remove startup_gdt[]")
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/20240819083334.148536-1-ubizjak@gmail.com
This commit is contained in:
parent
7678a53a16
commit
b51207dc02
|
|
@ -559,10 +559,11 @@ void early_setup_idt(void)
|
|||
*/
|
||||
void __head startup_64_setup_gdt_idt(void)
|
||||
{
|
||||
struct desc_struct *gdt = (void *)(__force unsigned long)init_per_cpu_var(gdt_page.gdt);
|
||||
void *handler = NULL;
|
||||
|
||||
struct desc_ptr startup_gdt_descr = {
|
||||
.address = (unsigned long)&RIP_REL_REF(init_per_cpu_var(gdt_page.gdt)),
|
||||
.address = (unsigned long)&RIP_REL_REF(*gdt),
|
||||
.size = GDT_SIZE - 1,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user