CVE-2025-68211

CVE-2025-68211

Medium · published December 16, 2025

CVSS v3.1
5.5
EPSS
0%
Percentile
3.6
In the wild
Unconfirmed
What it is

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

ksm: use range-walk function to jump over holes in scan_get_next_rmap_item

Currently, scan_get_next_rmap_item() walks every page address in a VMA to

locate mergeable pages. This becomes highly inefficient when scanning

large virtual memory areas that contain mostly unmapped regions, causing

ksmd to use large amount of cpu without deduplicating much pages.

This patch replaces the per-address lookup with a range walk using

walk_page_range(). The range walker allows KSM to skip over entire

unmapped holes in a VMA, avoiding unnecessary lookups. This problem was

previously discussed in [1].

Consider the following test program which creates a 32 TiB mapping in the

virtual address space but only populates a single page:

#include <unistd.h>

#include <stdio.h>

#include <sys/mman.h>

/* 32 TiB */

const size_t size = 32ul * 1024 * 1024 * 1024 * 1024;

int main() {

char *area = mmap(NULL, size, PROT_READ | PROT_WRITE,

MAP_NORESERVE | MAP_PRIVATE | MAP_ANON, -1, 0);

if (area == MAP_FAILED) {

perror("mmap() failed\n");

return -1;

}

/* Populate a single page such that we get an anon_vma. */

*area = 0;

/* Enable KSM. */

madvise(area, size, MADV_MERGEABLE);

pause();

return 0;

}

$ ./ksm-sparse &

$ echo 1 > /sys/kernel/mm/ksm/run

Without this patch ksmd uses 100% of the cpu for a long time (more then 1

hour in my test machine) scanning all the 32 TiB virtual address space

that contain only one mapped page. This makes ksmd essentially deadlocked

not able to deduplicate anything of value. With this patch ksmd walks

only the one mapped page and skips the rest of the 32 TiB virtual address

space, making the scan fast using little cpu.

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00147 · 3.6th percentile
Published
2025-12-16T19:15Z
Affected products (11)
ProductVersionsFixed in
linux/linux_kernel≥ 2.6.32, < 5.10.2495.10.249
linux/linux_kernel≥ 5.11, < 5.15.1995.15.199
linux/linux_kernel≥ 5.16, < 6.1.1616.1.161
linux/linux_kernel≥ 6.2, < 6.6.1216.6.121
linux/linux_kernel≥ 6.7, < 6.12.596.12.59
linux/linux_kernel≥ 6.13, < 6.17.96.17.9
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (7)
EPSS history
Timeline
  • 16 DEC 13:48Z
    ksm: use range-walk function to jump over holes in scan_get_next_rmap_item
    cvelistv5