| From 32bd95d30c6d2b90804c9961cc6e5a4cc1464eff Mon Sep 17 00:00:00 2001 |
| From: Christophe Leroy <christophe.leroy@c-s.fr> |
| Date: Fri, 9 Aug 2019 14:58:10 +0000 |
| Subject: [PATCH] powerpc/kasan: Fix shadow area set up for modules. |
| |
| commit 663c0c9496a69f80011205ba3194049bcafd681d upstream. |
| |
| When loading modules, from time to time an Oops is encountered during |
| the init of shadow area for globals. This is due to the last page not |
| always being mapped depending on the exact distance between the start |
| and the end of the shadow area and the alignment with the page |
| addresses. |
| |
| Fix this by aligning the starting address with the page address. |
| |
| Fixes: 2edb16efc899 ("powerpc/32: Add KASAN support") |
| Cc: stable@vger.kernel.org # v5.2+ |
| Reported-by: Erhard F. <erhard_f@mailbox.org> |
| Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> |
| Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
| Link: https://lore.kernel.org/r/4f887e9b77d0d725cbb52035c7ece485c1c5fc14.1565361881.git.christophe.leroy@c-s.fr |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/arch/powerpc/mm/kasan/kasan_init_32.c b/arch/powerpc/mm/kasan/kasan_init_32.c |
| index 3282f8a2aecc..802387b231ad 100644 |
| --- a/arch/powerpc/mm/kasan/kasan_init_32.c |
| +++ b/arch/powerpc/mm/kasan/kasan_init_32.c |
| @@ -87,7 +87,7 @@ static int __ref kasan_init_region(void *start, size_t size) |
| if (!slab_is_available()) |
| block = memblock_alloc(k_end - k_start, PAGE_SIZE); |
| |
| - for (k_cur = k_start; k_cur < k_end; k_cur += PAGE_SIZE) { |
| + for (k_cur = k_start & PAGE_MASK; k_cur < k_end; k_cur += PAGE_SIZE) { |
| pmd_t *pmd = pmd_offset(pud_offset(pgd_offset_k(k_cur), k_cur), k_cur); |
| void *va = block ? block + k_cur - k_start : kasan_get_one_page(); |
| pte_t pte = pfn_pte(PHYS_PFN(__pa(va)), PAGE_KERNEL); |
| -- |
| 2.7.4 |
| |