CVE-2024-42126

Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
30/07/2024
Last modified:
03/11/2025

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> powerpc: Avoid nmi_enter/nmi_exit in real mode interrupt.<br /> <br /> nmi_enter()/nmi_exit() touches per cpu variables which can lead to kernel<br /> crash when invoked during real mode interrupt handling (e.g. early HMI/MCE<br /> interrupt handler) if percpu allocation comes from vmalloc area.<br /> <br /> Early HMI/MCE handlers are called through DEFINE_INTERRUPT_HANDLER_NMI()<br /> wrapper which invokes nmi_enter/nmi_exit calls. We don&amp;#39;t see any issue when<br /> percpu allocation is from the embedded first chunk. However with<br /> CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK enabled there are chances where percpu<br /> allocation can come from the vmalloc area.<br /> <br /> With kernel command line "percpu_alloc=page" we can force percpu allocation<br /> to come from vmalloc area and can see kernel crash in machine_check_early:<br /> <br /> [ 1.215714] NIP [c000000000e49eb4] rcu_nmi_enter+0x24/0x110<br /> [ 1.215717] LR [c0000000000461a0] machine_check_early+0xf0/0x2c0<br /> [ 1.215719] --- interrupt: 200<br /> [ 1.215720] [c000000fffd73180] [0000000000000000] 0x0 (unreliable)<br /> [ 1.215722] [c000000fffd731b0] [0000000000000000] 0x0<br /> [ 1.215724] [c000000fffd73210] [c000000000008364] machine_check_early_common+0x134/0x1f8<br /> <br /> Fix this by avoiding use of nmi_enter()/nmi_exit() in real mode if percpu<br /> first chunk is not embedded.

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.10 (including) 5.10.224 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (including) 5.15.165 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (including) 6.1.98 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (including) 6.6.39 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (including) 6.9.9 (excluding)