CVE-2024-42240

x86/bhi: Avoid warning in #DB handler due to BHI mitigation

State
Published
Severity
Not scored
Published
Aug 7, 2024
Updated
May 23, 2026
Reserved
Jul 30, 2024

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

x86/bhi: Avoid warning in #DB handler due to BHI mitigation

When BHI mitigation is enabled, if SYSENTER is invoked with the TF flag set then entry_SYSENTER_compat() uses CLEAR_BRANCH_HISTORY and calls the clear_bhb_loop() before the TF flag is cleared. This causes the #DB handler (exc_debug_kernel()) to issue a warning because single-step is used outside the entry_SYSENTER_compat() function.

To address this issue, entry_SYSENTER_compat() should use CLEAR_BRANCH_HISTORY after making sure the TF flag is cleared.

The problem can be reproduced with the following sequence:

$ cat sysenter_step.c int main() { asm("pushf; pop %ax; bts $8,%ax; push %ax; popf; sysenter"); }

$ gcc -o sysenter_step sysenter_step.c

$ ./sysenter_step Segmentation fault (core dumped)

The program is expected to crash, and the #DB handler will issue a warning.

Kernel log:

WARNING: CPU: 27 PID: 7000 at arch/x86/kernel/traps.c:1009 exc_debug_kernel+0xd2/0x160 ... RIP: 0010:exc_debug_kernel+0xd2/0x160 ... Call Trace: <#DB> ? show_regs+0x68/0x80 ? __warn+0x8c/0x140 ? exc_debug_kernel+0xd2/0x160 ? report_bug+0x175/0x1a0 ? handle_bug+0x44/0x90 ? exc_invalid_op+0x1c/0x70 ? asm_exc_invalid_op+0x1f/0x30 ? exc_debug_kernel+0xd2/0x160 exc_debug+0x43/0x50 asm_exc_debug+0x1e/0x40 RIP: 0010:clear_bhb_loop+0x0/0xb0 ... </#DB> <TASK> ? entry_SYSENTER_compat_after_hwframe+0x6e/0x8d </TASK>

[ bp: Massage commit message. ]

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • bd53ec80f21839cfd4d852a6088279d602d67e5b to before db56615e96c439e13783d7715330e824b4fd4b84Affected
  • 07dbb10f153f483e8249acebdffedf922e2ec2e1 to before a765679defe1dc1b8fa01928a6ad6361e72a1364Affected
  • eb36b0dce2138581bc6b5e39d0273cb4c96ded81 to before dae3543db8f0cf8ac1a198c3bb4b6e3c24d576cfAffected
  • 7390db8aea0d64e9deb28b8e1ce716f5020c7ee5 to before 08518d48e5b744620524f0acd7c26c19bda7f513Affected
  • 7390db8aea0d64e9deb28b8e1ce716f5020c7ee5 to before ac8b270b61d48fcc61f052097777e3b5e11591e0Affected
  • 8f51637712e4da5be410a1666f8aee0d86eef898Affected
  • 5.15.154 to before 5.15.163Affected
  • 6.1.85 to before 6.1.100Affected
  • 6.6.26 to before 6.6.41Affected
  • 6.8.5 to before 6.9Affected
LinuxLinux
  • 6.9Affected
  • before 6.9Not affected
  • 5.15.163 through 5.15.*Not affected
  • 6.1.100 through 6.1.*Not affected
  • 6.6.41 through 6.6.*Not affected
  • 6.9.10 through 6.9.*Not affected
  • 6.10 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.