// For flags

CVE-2024-26783

mm/vmscan: fix a bug calling wakeup_kswapd() with a wrong zone index

Severity Score

5.5
*CVSS v3.1

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

0
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

Track
*SSVC
Descriptions

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

mm/vmscan: fix a bug calling wakeup_kswapd() with a wrong zone index

With numa balancing on, when a numa system is running where a numa node
doesn't have its local memory so it has no managed zones, the following
oops has been observed. It's because wakeup_kswapd() is called with a
wrong zone index, -1. Fixed it by checking the index before calling
wakeup_kswapd().

> BUG: unable to handle page fault for address: 00000000000033f3
> #PF: supervisor read access in kernel mode
> #PF: error_code(0x0000) - not-present page
> PGD 0 P4D 0
> Oops: 0000 [#1] PREEMPT SMP NOPTI
> CPU: 2 PID: 895 Comm: masim Not tainted 6.6.0-dirty #255
> Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
> rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014
> RIP: 0010:wakeup_kswapd (./linux/mm/vmscan.c:7812)
> Code: (omitted)
> RSP: 0000:ffffc90004257d58 EFLAGS: 00010286
> RAX: ffffffffffffffff RBX: ffff88883fff0480 RCX: 0000000000000003
> RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88883fff0480
> RBP: ffffffffffffffff R08: ff0003ffffffffff R09: ffffffffffffffff
> R10: ffff888106c95540 R11: 0000000055555554 R12: 0000000000000003
> R13: 0000000000000000 R14: 0000000000000000 R15: ffff88883fff0940
> FS: 00007fc4b8124740(0000) GS:ffff888827c00000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 00000000000033f3 CR3: 000000026cc08004 CR4: 0000000000770ee0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> PKRU: 55555554
> Call Trace:
> <TASK>
> ? __die
> ? page_fault_oops
> ? __pte_offset_map_lock
> ? exc_page_fault
> ? asm_exc_page_fault
> ? wakeup_kswapd
> migrate_misplaced_page
> __handle_mm_fault
> handle_mm_fault
> do_user_addr_fault
> exc_page_fault
> asm_exc_page_fault
> RIP: 0033:0x55b897ba0808
> Code: (omitted)
> RSP: 002b:00007ffeefa821a0 EFLAGS: 00010287
> RAX: 000055b89983acd0 RBX: 00007ffeefa823f8 RCX: 000055b89983acd0
> RDX: 00007fc2f8122010 RSI: 0000000000020000 RDI: 000055b89983acd0
> RBP: 00007ffeefa821a0 R08: 0000000000000037 R09: 0000000000000075
> R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000000000
> R13: 00007ffeefa82410 R14: 000055b897ba5dd8 R15: 00007fc4b8340000
> </TASK>

En el kernel de Linux, se resolvió la siguiente vulnerabilidad: mm/vmscan: corrige un error al llamar a wakeup_kswapd() con un índice de zona incorrecto Con el equilibrio numa activado, cuando se ejecuta un SYSTEM numa donde un nodo numa no tiene su memoria local por lo que no tiene zonas administradas, se ha observado lo siguiente. Es porque se llama a wakeup_kswapd() con un índice de zona incorrecto, -1. Se solucionó verificando el índice antes de llamar a wakeup_kswapd(). &gt; ERROR: no se puede manejar el error de página para la dirección: 00000000000033f3 &gt; #PF: acceso de lectura del supervisor en modo kernel &gt; #PF: error_code(0x0000) - página no presente &gt; PGD 0 P4D 0 &gt; Ups: 0000 [#1] SMP PREEMPT NOPTI &gt; CPU: 2 PID: 895 Comm: masim Not tainted 6.6.0-dirty #255 &gt; Nombre del hardware: PC estándar QEMU (i440FX + PIIX, 1996), BIOS &gt; rel-1.16.0-0-gd239552ce722-prebuilt.qemu .org 01/04/2014 &gt; RIP: 0010:wakeup_kswapd (./linux/mm/vmscan.c:7812) &gt; Código: (omitido) &gt; RSP: 0000:ffffc90004257d58 EFLAGS: 00010286 &gt; RAX: ffffffffffffffff RBX: ffff88883f ff0480RCX: 0000000000000003 &gt; RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88883fff0480 &gt; RBP: ffffffffffffffff R08: ff0003ffffffffff R09: ffffffffffffffff &gt; R10: ff ff888106c95540 R11: 0000000055555554 R12: 0000000000000003 &gt; R13: 0000000000000000 R14: 00000000000000000 R15: ffff88883fff0940 &gt; FS: 0000 7fc4b8124740(0000) GS: ffff888827c00000(0000) knlGS:0000000000000000 &gt; CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 &gt; CR2: 00000000000033f3 CR3: 000000026cc08004 CR4: 0000000000770ee0 &gt; DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 &gt; DR3: 00000000000000000 DR6: 00000000ffe0ff0 DR7: 000 0000000000400 &gt; PKRU: 55555554 &gt; Rastreo de llamadas: &gt; &gt; ? __morir &gt; ? page_fault_oops &gt; ? __pte_offset_map_lock &gt; ? exc_page_fault &gt; ? asm_exc_page_fault &gt; ? wakeup_kswapd &gt; migrar_misplaced_page &gt; __handle_mm_fault &gt; handle_mm_fault &gt; do_user_addr_fault &gt; exc_page_fault &gt; asm_exc_page_fault &gt; RIP: 0033:0x55b897ba0808 &gt; Código: (omitido) &gt; RSP: 002b:00007ffeefa821a0 EFLAGS: 00 010287 &gt; RAX: 000055b89983acd0 RBX: 00007ffeefa823f8 RCX: 000055b89983acd0 &gt; RDX: 00007fc2f8122010 RSI: 0000000000020000 RDI: 000055b89983acd0 &gt; RBP: 00007ffeefa821a0 R08: 0000000000000037 R09: 00000000000000075 &gt; R10: 0000000000000000 R11: 0 000000000000202 R12: 0000000000000000 &gt; R13: 00007ffeefa82410 R14: 000055b897ba5dd8 R15: 00007fc4b8340000 &gt;

A vulnerability was found in the Linux kernel's memory management subsystem. The `wakeup_kswapd()` function was called with an incorrect zone index. This error could disrupt the proper functioning of memory management, potentially leading to system instability or performance issues.

*Credits: N/A
CVSS Scores
Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High
* Common Vulnerability Scoring System
SSVC
  • Decision:Track
Exploitation
None
Automatable
No
Tech. Impact
Partial
* Organization's Worst-case Scenario
Timeline
  • 2024-02-19 CVE Reserved
  • 2024-04-04 CVE Published
  • 2024-04-05 EPSS Updated
  • 2024-08-02 CVE Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
  • ---------- First Exploit
CWE
  • CWE-762: Mismatched Memory Management Routines
CAPEC
Affected Vendors, Products, and Versions
Vendor Product Version Other Status
Vendor Product Version Other Status <-- --> Vendor Product Version Other Status
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 5.18 < 6.6.22
Search vendor "Linux" for product "Linux Kernel" and version " >= 5.18 < 6.6.22"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 5.18 < 6.7.9
Search vendor "Linux" for product "Linux Kernel" and version " >= 5.18 < 6.7.9"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 5.18 < 6.8
Search vendor "Linux" for product "Linux Kernel" and version " >= 5.18 < 6.8"
en
Affected