CVE-2024-57945

riscv: mm: Fix the out of bound issue of vmemmap address

HIGH
7.1
CVSS Score
Published: January 21, 2025 at 12:18 PM UTC
Updated: August 5, 2026 at 12:44 PM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.1
Exploit prediction
EPSS 0.2%

Description

In the Linux kernel, the following vulnerability has been resolved: riscv: mm: Fix the out of bound issue of vmemmap address In sparse vmemmap model, the virtual address of vmemmap is calculated as: ((struct page *)VMEMMAP_START - (phys_ram_base >> PAGE_SHIFT)). And the struct page's va can be calculated with an offset: (vmemmap + (pfn)). However, when initializing struct pages, kernel actually starts from the first page from the same section that phys_ram_base belongs to. If the first page's physical address is not (phys_ram_base >> PAGE_SHIFT), then we get an va below VMEMMAP_START when calculating va for it's struct page. For example, if phys_ram_base starts from 0x82000000 with pfn 0x82000, the first page in the same section is actually pfn 0x80000. During init_unavailable_range(), we will initialize struct page for pfn 0x80000 with virtual address ((struct page *)VMEMMAP_START - 0x2000), which is below VMEMMAP_START as well as PCI_IO_END. This commit fixes this bug by introducing a new variable 'vmemmap_start_pfn' which is aligned with memory section size and using it to calculate vmemmap address instead of phys_ram_base.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

v ≥ 5.15.151v ≥ 6.7.95.10.212 ≤ v < 5.10.2585.10.212 ≤ v < 5.115.15.151 ≤ v < 5.166.1.81 ≤ v < 6.1.1406.6.21 ≤ v < 6.6.726.7.9 ≤ v < 6.86.8 ≤ v < 6.12.106.8 ≤ v < 6.136.8.1 ≤ v < 6.12.102a1728c15ec4f45ed9248ae22f626541c179bfbe5.10.2125.15.1515941a90c55d3bfba732b32208d58d997600b44ef6.1.816.13 rc16.13 rc26.13 rc36.13 rc46.13 rc56.13 rc66.6.216.7.96.86.8 rc78310080799b40fd9f2a8b808c657269678c149af8af1c121b0102041809bc137ec600d1865eaeedda11dd49dcb9376776193e15641f84fcc1e5980c9a278d5c60f21aa15d540abb2f2da6e6d795c3e6e
Vendor states this is fixed in 04350304428063da6a55a8a4597d409dc69148b2 (fixed)
Vendor states this is fixed in 92f08673d3f1893191323572f60e3c62f2e57c2f (fixed)
Vendor states this is fixed in a4a7ac3d266008018f05fae53060fcb331151a14 (fixed)
Vendor states this is fixed in d2bd51954ac8377c2f1eb1813e694788998add66 (fixed)
Vendor states this is fixed in f754f27e98f88428aaf6be6e00f5cbce97f62d4b (fixed)
Vendor states this is fixed in 5.10.258 (unaffected)
Affected range stops below 5.11, so it looks safe — our inference, not a vendor statement
Affected range stops below 5.16, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 6.1.140 (unaffected)
Vendor states this is fixed in 6.12.10 (unaffected)
Vendor states this is fixed in 6.13 (unaffected)
Vendor states this is fixed in 6.6.72 (unaffected)
Vendor states this is fixed in 6.8 (unaffected)

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
HIGH
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusMODIFIED
CWE
CWE-125

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card