summaryrefslogtreecommitdiff
path: root/mm/ptdump.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-08-19 18:18:21 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-08-19 18:18:21 +0200
commitac8649cebe6d84d3333893b67b2023fef90772e5 (patch)
tree07b614ce1324e8f0590d12923606fc4c2ac7fed6 /mm/ptdump.c
parentb2c0abc1f2778c28522bc44f5134772809949717 (diff)
parentbf3be28f6721e24961992ebb9e61c0cf21a56806 (diff)
downloadlinux-stable-linux-rolling-lts.tar.gz
linux-stable-linux-rolling-lts.zip
Merge v6.18.45linux-rolling-lts
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'mm/ptdump.c')
-rw-r--r--mm/ptdump.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/mm/ptdump.c b/mm/ptdump.c
index b600c7f864b8..217ebb6edc61 100644
--- a/mm/ptdump.c
+++ b/mm/ptdump.c
@@ -178,11 +178,18 @@ void ptdump_walk_pgd(struct ptdump_state *st, struct mm_struct *mm, pgd_t *pgd)
get_online_mems();
mmap_write_lock(mm);
+ /* To stabilise kernel page tables we must hold the init_mm lock too. */
+ if (mm != &init_mm)
+ mmap_write_lock_nested(&init_mm, SINGLE_DEPTH_NESTING);
+
while (range->start != range->end) {
walk_page_range_debug(mm, range->start, range->end,
&ptdump_ops, pgd, st);
range++;
}
+
+ if (mm != &init_mm)
+ mmap_write_unlock(&init_mm);
mmap_write_unlock(mm);
put_online_mems();