{
  "schema_version": "1.6.1",
  "id": "RPI-CVE-2024-26795",
  "modified": "2026-10-09T11:39:44Z",
  "upstream": [
    "CVE-2024-26795"
  ],
  "published": "2024-04-04T08:23:56Z",
  "summary": "riscv: Sparse-Memory/vmemmap out-of-bounds fix",
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nriscv: Sparse-Memory/vmemmap out-of-bounds fix\n\nOffset vmemmap so that the first page of vmemmap will be mapped\nto the first page of physical memory in order to ensure that\nvmemmap\u2019s bounds will be respected during\npfn_to_page()/page_to_pfn() operations.\nThe conversion macros will produce correct SV39/48/57 addresses\nfor every possible/valid DRAM_BASE inside the physical memory limits.\n\nv2:Address Alex's comments",
  "severity": [
    {
      "type": "CVSS_V3",
      "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
    }
  ],
  "affected": [
    {
      "package": {
        "ecosystem": "Raspberry Pi OS:12",
        "name": "linux"
      },
      "versions": [
        "1:6.1.47-1+rpt4"
      ],
      "ecosystem_specific": {
        "binaries": [
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-2712",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v6",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7l",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v8",
            "binary_version": "1:6.1.47-1+rpt4"
          }
        ]
      },
      "database_specific": {
        "per_version": {
          "1:6.1.47-1+rpt4": {
            "linux_commit": "655fc658a15ae7a6f37103754adb39ba52a9a14e",
            "upstream_version": "6.1.47",
            "assessment": "commit ancestry (strak rule)",
            "upstream_fixed": "6.1.81",
            "compiled_filter": false
          }
        }
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.cve.org/CVERecord?id=CVE-2024-26795"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/5941a90c55d3bfba732b32208d58d997600b44ef"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/8310080799b40fd9f2a8b808c657269678c149af"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/a278d5c60f21aa15d540abb2f2da6e6d795c3e6e"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/2a1728c15ec4f45ed9248ae22f626541c179bfbe"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/a11dd49dcb9376776193e15641f84fcc1e5980c9"
    }
  ],
  "database_specific": {
    "source": "https://git.kernel.org/pub/scm/linux/security/vulns.git",
    "upstream_modified": "2026-08-05T11:52:36Z",
    "severity": {
      "source": "kernel CNA",
      "cvss_v3_score": 7.8,
      "cvss_v3_severity": "High",
      "scenario": "AV:L - The defective `vmemmap` conversion is core arch/MM code exercised through ordinary local syscalls (page faults, mmap, read/write, fork, GUP/DMA setup); it is not reachable as a distinct remote protocol surface. Exploitation therefore requires local execution on the affected RISC-V system.\nAC:L - On an affected RISC-V deployment the out-of-bounds `pfn_to_page()`/`page_to_pfn()` result is deterministic \u2014 no race, no memory-layout guessing, no timing window \u2014 and any unprivileged memory operation reaches it reliably. Per CVSS 3.1 the vulnerable configuration is assumed, and nothing extra beyond the attacker's control must hold.\nPR:L - No capability, namespace, or admin check guards `pfn_to_page()`/`page_to_pfn()`; a plain unprivileged user process touching pages, mapping memory, or issuing I/O drives the miscomputed conversion. Only a basic local account is needed.\nUI:N - No victim action, mount, or file open is required \u2014 the corrupted address computation is hit by the attacker's own ordinary memory operations.\nS:U - The out-of-bounds accesses stay within kernel virtual memory (vmemmap spilling into the adjacent vmalloc region); no VM, IOMMU, or sandbox boundary is crossed.\nC:H - `struct page` accesses land outside the vmemmap region in the vmalloc area holding VMAP_STACK kernel stacks and module data, and `page_to_pfn()` returns wrong PFNs so the wrong physical pages are mapped to userspace or DMA'd \u2014 yielding disclosure of arbitrary kernel and other-process memory.\nI:H - The same aliasing gives an out-of-bounds *write*: refcount/flag/mapping updates to `struct page` overwrite vmalloc-region kernel data, and wrong PFNs cause the wrong physical pages to be written, a memory-corruption primitive usable for control-flow hijacking.\nA:H - Overlapping the struct page array with vmalloc allocations and kernel stacks reliably produces oopses, BUG_ONs, and full kernel panics on the affected platform."
    }
  }
}
