Re: [PATCH 3/6] x86/entry: Use PUSH_AND_CLEAR_REGS for compat

From: Peter Zijlstra
Date: Thu May 19 2022 - 13:00:43 EST


On Thu, May 19, 2022 at 09:24:11AM -0700, Guenter Roeck wrote:
> On Fri, May 06, 2022 at 02:14:34PM +0200, Peter Zijlstra wrote:
> > Since the upper regs don't exist for ia32 code, preserving them
> > doesn't hurt and it simplifies the code.
> >
> > This doesn't add any attack surface that would not already be
> > available through INT80.
> >
> > Notably:
> >
> > - 32bit SYSENTER: didn't clear si, dx, cx.
> >
> > - 32bit SYSCALL, INT80: *do* clear si since the C functions don't
> > take a second argument.
> >
> > - 64bit: didn't clear si since the C functions take a second
> > argument; except the error_entry path might have only one argument,
> > so clearing si was missing here.
> >
> > 32b SYSENTER should be clearing all those 3 registers, nothing uses them
> > and selftests pass.
> >
> > Unconditionally clear rsi since it simplifies code.
> >
> > Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
> > Reviewed-by: Borislav Petkov <bp@xxxxxxx>
>
> linux-next (next-20220519) crashes due to this patch when booting
> q35:EPYC-Rome in qemu.

Could you try backing out each of the hunks one at a time? They're all
more or less independent.

My bet with this being a #PF on an AMD machine, it's either the SI clear
or the SYSCALL change.