s390/vmem: fix empty page tables cleanup under KASAN
authorVasily Gorbik <gor@linux.ibm.com>
Sat, 28 Jan 2023 16:35:12 +0000 (17:35 +0100)
committerHeiko Carstens <hca@linux.ibm.com>
Mon, 6 Feb 2023 10:13:53 +0000 (11:13 +0100)
Commit b9ff81003cf1 ("s390/vmem: cleanup empty page tables") introduced
empty page tables cleanup in vmem code, but when the kernel is built
with KASAN enabled the code has no effect due to wrong KASAN shadow
memory intersection condition, which effectively ignores any memory
range below KASAN shadow. Fix intersection condition to make code
work as anticipated.

Fixes: b9ff81003cf1 ("s390/vmem: cleanup empty page tables")
Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/mm/vmem.c

index 15daf777cf419f5fc6c70a2f76e701137138473e..10bf5fcbb5089de40f9fe3363bd7b7dc1ce38bbb 100644 (file)
@@ -298,7 +298,7 @@ static void try_free_pmd_table(pud_t *pud, unsigned long start)
        if (end > VMALLOC_START)
                return;
 #ifdef CONFIG_KASAN
-       if (start < KASAN_SHADOW_END && KASAN_SHADOW_START > end)
+       if (start < KASAN_SHADOW_END && end > KASAN_SHADOW_START)
                return;
 #endif
        pmd = pmd_offset(pud, start);
@@ -373,7 +373,7 @@ static void try_free_pud_table(p4d_t *p4d, unsigned long start)
        if (end > VMALLOC_START)
                return;
 #ifdef CONFIG_KASAN
-       if (start < KASAN_SHADOW_END && KASAN_SHADOW_START > end)
+       if (start < KASAN_SHADOW_END && end > KASAN_SHADOW_START)
                return;
 #endif
 
@@ -427,7 +427,7 @@ static void try_free_p4d_table(pgd_t *pgd, unsigned long start)
        if (end > VMALLOC_START)
                return;
 #ifdef CONFIG_KASAN
-       if (start < KASAN_SHADOW_END && KASAN_SHADOW_START > end)
+       if (start < KASAN_SHADOW_END && end > KASAN_SHADOW_START)
                return;
 #endif