[PATCH v3 0/2] mm/ksm: Fix incorrect accounting of KSM counters during fork.

From: Donet Tom

Date: Tue Sep 23 2025 - 14:47:28 EST


The first patch in this series fixes the incorrect accounting of KSM
counters such as ksm_merging_pages, ksm_rmap_items, and the global
ksm_zero_pages during fork.

The following patch added a selftest to verify the ksm_merging_pages
counter was updated correctly during fork.

Test Results
============
Without the first patch
-----------------------
# [RUN] test_fork_ksm_merging_page_count
not ok 10 ksm_merging_page in child: 32

With the first patch
--------------------
# [RUN] test_fork_ksm_merging_page_count
ok 10 ksm_merging_pages is not inherited after fork

Changes:
V2 -> v3:
- Added Reviewed-by and Acked-by tags
- Added cleanup on exit in ksm_merging_pages test.
- Dropped test_fork_global_ksm_zero_pages_count because it can give false
failures if multiple processes attempt KSM zero-page merging and unmerging
during test execution.

v2: https://lore.kernel.org/all/cover.1757946863.git.donettom@xxxxxxxxxxxxx/#t

v1: https://lore.kernel.org/all/2e662107e01417bf9af23bc7f52863cd538419be.1756211338.git.donettom@xxxxxxxxxxxxx/

Donet Tom (2):
mm/ksm: Fix incorrect KSM counter handling in mm_struct during fork
selftests/mm: Added fork inheritance test for ksm_merging_pages
counter

include/linux/ksm.h | 8 +++-
.../selftests/mm/ksm_functional_tests.c | 43 ++++++++++++++++++-
2 files changed, 49 insertions(+), 2 deletions(-)

--
2.51.0