| From 6e866a462867b60841202e900f10936a0478608c Mon Sep 17 00:00:00 2001 |
| From: Helge Deller <deller@gmx.de> |
| Date: Sun, 31 Oct 2021 21:58:12 +0100 |
| Subject: parisc: Fix set_fixmap() on PA1.x CPUs |
| |
| From: Helge Deller <deller@gmx.de> |
| |
| commit 6e866a462867b60841202e900f10936a0478608c upstream. |
| |
| Fix a kernel crash which happens on PA1.x CPUs while initializing the |
| FTRACE/KPROBE breakpoints. The PTE table entries for the fixmap area |
| were not created correctly. |
| |
| Signed-off-by: Helge Deller <deller@gmx.de> |
| Fixes: ccfbc68d41c2 ("parisc: add set_fixmap()/clear_fixmap()") |
| Cc: stable@vger.kernel.org # v5.2+ |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/parisc/mm/fixmap.c | 5 +---- |
| 1 file changed, 1 insertion(+), 4 deletions(-) |
| |
| --- a/arch/parisc/mm/fixmap.c |
| +++ b/arch/parisc/mm/fixmap.c |
| @@ -18,12 +18,9 @@ void notrace set_fixmap(enum fixed_addre |
| pte_t *pte; |
| |
| if (pmd_none(*pmd)) |
| - pmd = pmd_alloc(NULL, pgd, vaddr); |
| - |
| - pte = pte_offset_kernel(pmd, vaddr); |
| - if (pte_none(*pte)) |
| pte = pte_alloc_kernel(pmd, vaddr); |
| |
| + pte = pte_offset_kernel(pmd, vaddr); |
| set_pte_at(&init_mm, vaddr, pte, __mk_pte(phys, PAGE_KERNEL_RWX)); |
| flush_tlb_kernel_range(vaddr, vaddr + PAGE_SIZE); |
| } |