diff options
author | Heiko Carstens <hca@linux.ibm.com> | 2020-09-07 18:20:05 +0300 |
---|---|---|
committer | Vasily Gorbik <gor@linux.ibm.com> | 2020-09-14 12:38:34 +0300 |
commit | da1694ad9e8d13484c8b4ecaabde0bd7b958442a (patch) | |
tree | bd504d95a0fa035b362274044c6a0f1441b593d0 /arch/s390/mm/dump_pagetables.c | |
parent | 36c2733c439caa424fe2b7dded870913dcb868ac (diff) | |
download | linux-da1694ad9e8d13484c8b4ecaabde0bd7b958442a.tar.xz |
s390/mm,ptdump: hold cpa mutex while walking for kernel page table dump
This is currently only preventing that outdated information is
provided to user space. A concurrent split of huge/large pages does
modify the kernel page tables, however either the huge/large mapping
is reported or the split area is being walked.
This "fixes" also only a potential future bug, since split pages could
also be merged again if page permissions are the same for larger
memory areas.
Reviewed-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Diffstat (limited to 'arch/s390/mm/dump_pagetables.c')
-rw-r--r-- | arch/s390/mm/dump_pagetables.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/s390/mm/dump_pagetables.c b/arch/s390/mm/dump_pagetables.c index 3c5e4055a3d2..09c7179cb17d 100644 --- a/arch/s390/mm/dump_pagetables.c +++ b/arch/s390/mm/dump_pagetables.c @@ -1,4 +1,5 @@ // SPDX-License-Identifier: GPL-2.0 +#include <linux/set_memory.h> #include <linux/ptdump.h> #include <linux/seq_file.h> #include <linux/debugfs.h> @@ -130,7 +131,9 @@ static int ptdump_show(struct seq_file *m, void *v) }; get_online_mems(); + mutex_lock(&cpa_mutex); ptdump_walk_pgd(&st.ptdump, &init_mm, NULL); + mutex_unlock(&cpa_mutex); put_online_mems(); return 0; } |