summary refs log tree commit diff
path: root/arch/s390
diff options
context:
space:
mode:
authorHeiko Carstens <hca@linux.ibm.com>2021-08-24 15:21:44 +0200
committerHeiko Carstens <hca@linux.ibm.com>2021-08-25 11:03:34 +0200
commitc4f0e5cfde354b1d6cf2388c0920264985c6c139 (patch)
tree20b2756b1da2350a4ac577382833d68eaf930025 /arch/s390
parent8b5f08b484bd948e1bedcd5a637a4f7609f1c7c1 (diff)
downloadlinux-c4f0e5cfde354b1d6cf2388c0920264985c6c139.tar.gz
s390/mm,pageattr: fix walk_pte_level() early exit
In case of splitting to 4k mapping the early exit in walk_pte_level()
must only be taken iff flags is equal to SET_MEMORY_4K.
Currently the early exit is taken if the flag is set, and also others
might be set. This may lead to the situation that a mapping is split
but other changes are not done, like e.g. setting pages to R/W.

There is currently no such caller, but there might be in the future.

Fixes: b3e1a00c8fa4 ("s390/mm: implement set_memory_4k()")
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch/s390')
-rw-r--r--arch/s390/mm/pageattr.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/s390/mm/pageattr.c b/arch/s390/mm/pageattr.c
index 45197b71d55f..fdc86c0e4e6c 100644
--- a/arch/s390/mm/pageattr.c
+++ b/arch/s390/mm/pageattr.c
@@ -86,7 +86,7 @@ static int walk_pte_level(pmd_t *pmdp, unsigned long addr, unsigned long end,
 {
 	pte_t *ptep, new;
 
-	if ((flags & SET_MEMORY_4K) == SET_MEMORY_4K)
+	if (flags == SET_MEMORY_4K)
 		return 0;
 	ptep = pte_offset_kernel(pmdp, addr);
 	do {