hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/arch/xtensa/mm/kasan_init.c
....@@ -8,11 +8,10 @@
88 * Copyright (C) 2017 Cadence Design Systems Inc.
99 */
1010
11
-#include <linux/bootmem.h>
11
+#include <linux/memblock.h>
1212 #include <linux/init_task.h>
1313 #include <linux/kasan.h>
1414 #include <linux/kernel.h>
15
-#include <linux/memblock.h>
1615 #include <asm/initialize_mmu.h>
1716 #include <asm/tlbflush.h>
1817 #include <asm/traps.h>
....@@ -20,8 +19,7 @@
2019 void __init kasan_early_init(void)
2120 {
2221 unsigned long vaddr = KASAN_SHADOW_START;
23
- pgd_t *pgd = pgd_offset_k(vaddr);
24
- pmd_t *pmd = pmd_offset(pgd, vaddr);
22
+ pmd_t *pmd = pmd_off_k(vaddr);
2523 int i;
2624
2725 for (i = 0; i < PTRS_PER_PTE; ++i)
....@@ -42,9 +40,12 @@
4240 unsigned long n_pmds = n_pages / PTRS_PER_PTE;
4341 unsigned long i, j;
4442 unsigned long vaddr = (unsigned long)start;
45
- pgd_t *pgd = pgd_offset_k(vaddr);
46
- pmd_t *pmd = pmd_offset(pgd, vaddr);
47
- pte_t *pte = memblock_virt_alloc(n_pages * sizeof(pte_t), PAGE_SIZE);
43
+ pmd_t *pmd = pmd_off_k(vaddr);
44
+ pte_t *pte = memblock_alloc(n_pages * sizeof(pte_t), PAGE_SIZE);
45
+
46
+ if (!pte)
47
+ panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
48
+ __func__, n_pages * sizeof(pte_t), PAGE_SIZE);
4849
4950 pr_debug("%s: %p - %p\n", __func__, start, end);
5051
....@@ -53,8 +54,12 @@
5354
5455 for (k = 0; k < PTRS_PER_PTE; ++k, ++j) {
5556 phys_addr_t phys =
56
- memblock_alloc_base(PAGE_SIZE, PAGE_SIZE,
57
- MEMBLOCK_ALLOC_ANYWHERE);
57
+ memblock_phys_alloc_range(PAGE_SIZE, PAGE_SIZE,
58
+ 0,
59
+ MEMBLOCK_ALLOC_ANYWHERE);
60
+
61
+ if (!phys)
62
+ panic("Failed to allocate page table page\n");
5863
5964 set_pte(pte + j, pfn_pte(PHYS_PFN(phys), PAGE_KERNEL));
6065 }