Re: [PATCH] x86/bhi: BHI mitigation can trigger warning in #DB handler

From: Alexandre Chartre
Date: Thu May 23 2024 - 14:29:52 EST




On 5/23/24 19:53, Andrew Cooper wrote:
On 23/05/2024 6:03 pm, Alexandre Chartre wrote:

On 5/23/24 17:36, Dave Hansen wrote:
On 5/23/24 07:52, Alexandre Chartre wrote:
Should we wrap up this gem and put it with the other entry selftests?

It looks like tools/testing/selftests/x86/single_step_syscall.c tests
sysenter with TF set but it doesn't check if the kernel issues any
warning.

Does it actually trip the warning though? I'm a bit surprised that
nobody reported it if so.

single_step_syscall does trigger the warning:

$ ./single_step_syscall
[RUN]    Set TF and check nop
[OK]    Survived with TF set and 26 traps
[RUN]    Set TF and check syscall-less opportunistic sysret
[OK]    Survived with TF set and 30 traps
[RUN]    Set TF and check a fast syscall
[OK]    Survived with TF set and 40 traps
[RUN]    Fast syscall with TF cleared
[OK]    Nothing unexpected happened
[RUN]    Set TF and check SYSENTER
    Got SIGSEGV with RIP=ed7fe579, TF=256
[RUN]    Fast syscall with TF cleared
[OK]    Nothing unexpected happened

:-/

What about the exit code?

I find the absence of a [FAIL] concerning...


$ ./single_step_syscall
[RUN] Set TF and check nop
[OK] Survived with TF set and 26 traps
[RUN] Set TF and check syscall-less opportunistic sysret
[OK] Survived with TF set and 30 traps
[RUN] Set TF and check a fast syscall
[OK] Survived with TF set and 40 traps
[RUN] Fast syscall with TF cleared
[OK] Nothing unexpected happened
[RUN] Set TF and check SYSENTER
Got SIGSEGV with RIP=bb44b579, TF=256
[RUN] Fast syscall with TF cleared
[OK] Nothing unexpected happened

$ echo $?
0

The program runs as expected (but it doesn't expect much than a SIGSEGV).
It triggers a warning from the kernel but it doesn't check if a warning
was produced.

alex.