Skip to content

Commit

Permalink
kasan: Add (pmd|pud)_init for LoongArch zero_(pud|p4d)_populate process
Browse files Browse the repository at this point in the history
LoongArch populates pmd/pud with invalid_pmd_table/invalid_pud_table in
pagetable_init, So pmd_init/pud_init(p) is required, define them as __weak
in mm/kasan/init.c, like mm/sparse-vmemmap.c.

Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com>
Signed-off-by: Qing Zhang <zhangqing@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
  • Loading branch information
Qing Zhang authored and Huacai Chen committed Sep 6, 2023
1 parent 9b04c76 commit fb6d5c1
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions mm/kasan/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,10 @@ static int __ref zero_pmd_populate(pud_t *pud, unsigned long addr,
return 0;
}

void __weak __meminit pmd_init(void *addr)
{
}

static int __ref zero_pud_populate(p4d_t *p4d, unsigned long addr,
unsigned long end)
{
Expand Down Expand Up @@ -166,8 +170,9 @@ static int __ref zero_pud_populate(p4d_t *p4d, unsigned long addr,
if (!p)
return -ENOMEM;
} else {
pud_populate(&init_mm, pud,
early_alloc(PAGE_SIZE, NUMA_NO_NODE));
p = early_alloc(PAGE_SIZE, NUMA_NO_NODE);
pmd_init(p);
pud_populate(&init_mm, pud, p);
}
}
zero_pmd_populate(pud, addr, next);
Expand All @@ -176,6 +181,10 @@ static int __ref zero_pud_populate(p4d_t *p4d, unsigned long addr,
return 0;
}

void __weak __meminit pud_init(void *addr)
{
}

static int __ref zero_p4d_populate(pgd_t *pgd, unsigned long addr,
unsigned long end)
{
Expand Down Expand Up @@ -207,8 +216,9 @@ static int __ref zero_p4d_populate(pgd_t *pgd, unsigned long addr,
if (!p)
return -ENOMEM;
} else {
p4d_populate(&init_mm, p4d,
early_alloc(PAGE_SIZE, NUMA_NO_NODE));
p = early_alloc(PAGE_SIZE, NUMA_NO_NODE);
pud_init(p);
p4d_populate(&init_mm, p4d, p);
}
}
zero_pud_populate(p4d, addr, next);
Expand Down

0 comments on commit fb6d5c1

Please sign in to comment.