On Tue, Aug 16, 2022 at 09:11:37AM +0200, Juergen Gross wrote: > Commit c89191ce67ef ("x86/entry: Convert SWAPGS to swapgs and remove > the definition of SWAPGS") missed one use case of SWAPGS in > entry_INT80_compat. Removing of the SWAPGS macro led to asm just > using "swapgs", as it is accepting instructions in capital letters, > too. > > This in turn leads to splats in Xen PV guests like: > > [ 36.145223] general protection fault, maybe for address 0x2d: 0000 [#1] PREEMPT SMP NOPTI > [ 36.145794] CPU: 2 PID: 1847 Comm: ld-linux.so.2 Not tainted 5.19.1-1-default #1 openSUSE Tumbleweed f3b44bfb672cdb9f235aff53b57724eba8b9411b > [ 36.146608] Hardware name: HP ProLiant ML350p Gen8, BIOS P72 11/14/2013 > [ 36.148126] RIP: e030:entry_INT80_compat+0x3/0xa3 > > Fix that by open coding this single instance of the SWAPGS macro. > > Cc: <stable@xxxxxxxxxxxxxxx> # 5.19 > Fixes: c89191ce67ef ("x86/entry: Convert SWAPGS to swapgs and remove the definition of SWAPGS") > Signed-off-by: Juergen Gross <jgross@xxxxxxxx> It's a little unfortunate int80 is different from the other compat entry points, but that's life I suppose. Acked-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> > --- > arch/x86/entry/entry_64_compat.S | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/entry/entry_64_compat.S b/arch/x86/entry/entry_64_compat.S > index 682338e7e2a3..4dd19819053a 100644 > --- a/arch/x86/entry/entry_64_compat.S > +++ b/arch/x86/entry/entry_64_compat.S > @@ -311,7 +311,7 @@ SYM_CODE_START(entry_INT80_compat) > * Interrupts are off on entry. > */ > ASM_CLAC /* Do this early to minimize exposure */ > - SWAPGS > + ALTERNATIVE "swapgs", "", X86_FEATURE_XENPV > > /* > * User tracing code (ptrace or signal handlers) might assume that > -- > 2.35.3 >