Skip to content

Commit

Permalink
x86/Xen: swap NX determination and GDT setup on BSP
Browse files Browse the repository at this point in the history
xen_setup_gdt(), via xen_load_gdt_boot(), wants to adjust page tables.
For this to work when NX is not available, x86_configure_nx() needs to
be called first.

[jgross] Note that this is a revert of 36104cb ("x86/xen:
Delay get_cpu_cap until stack canary is established"), which is possible
now that we no longer support running as PV guest in 32-bit mode.

Cc: <stable.vger.kernel.org> # 5.9
Fixes: 36104cb ("x86/xen: Delay get_cpu_cap until stack canary is established")
Reported-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Juergen Gross <jgross@suse.com>

Link: https://lore.kernel.org/r/12a866b0-9e89-59f7-ebeb-a2a6cec0987a@suse.com
Signed-off-by: Juergen Gross <jgross@suse.com>
  • Loading branch information
Jan Beulich authored and Juergen Gross committed May 21, 2021
1 parent 97729b6 commit ae897fd
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions arch/x86/xen/enlighten_pv.c
Original file line number Diff line number Diff line change
Expand Up @@ -1273,16 +1273,16 @@ asmlinkage __visible void __init xen_start_kernel(void)
/* Get mfn list */
xen_build_dynamic_phys_to_machine();

/* Work out if we support NX */
get_cpu_cap(&boot_cpu_data);
x86_configure_nx();

/*
* Set up kernel GDT and segment registers, mainly so that
* -fstack-protector code can be executed.
*/
xen_setup_gdt(0);

/* Work out if we support NX */
get_cpu_cap(&boot_cpu_data);
x86_configure_nx();

/* Determine virtual and physical address sizes */
get_cpu_address_sizes(&boot_cpu_data);

Expand Down

0 comments on commit ae897fd

Please sign in to comment.