pgtable.c (ab1c247094e323177a578b38f0325bf79f0317ac) | pgtable.c (ea4654e0885348f0faa47f6d7b44a08d75ad16e9) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2#include <linux/mm.h> 3#include <linux/gfp.h> 4#include <linux/hugetlb.h> 5#include <asm/pgalloc.h> 6#include <asm/tlb.h> 7#include <asm/fixmap.h> 8#include <asm/mtrr.h> --- 279 unchanged lines hidden (view full) --- 288 289static void pgd_mop_up_pmds(struct mm_struct *mm, pgd_t *pgdp) 290{ 291 int i; 292 293 for (i = 0; i < PREALLOCATED_PMDS; i++) 294 mop_up_one_pmd(mm, &pgdp[i]); 295 | 1// SPDX-License-Identifier: GPL-2.0 2#include <linux/mm.h> 3#include <linux/gfp.h> 4#include <linux/hugetlb.h> 5#include <asm/pgalloc.h> 6#include <asm/tlb.h> 7#include <asm/fixmap.h> 8#include <asm/mtrr.h> --- 279 unchanged lines hidden (view full) --- 288 289static void pgd_mop_up_pmds(struct mm_struct *mm, pgd_t *pgdp) 290{ 291 int i; 292 293 for (i = 0; i < PREALLOCATED_PMDS; i++) 294 mop_up_one_pmd(mm, &pgdp[i]); 295 |
296#ifdef CONFIG_PAGE_TABLE_ISOLATION | 296#ifdef CONFIG_MITIGATION_PAGE_TABLE_ISOLATION |
297 298 if (!boot_cpu_has(X86_FEATURE_PTI)) 299 return; 300 301 pgdp = kernel_to_user_pgdp(pgdp); 302 303 for (i = 0; i < PREALLOCATED_USER_PMDS; i++) 304 mop_up_one_pmd(mm, &pgdp[i + KERNEL_PGD_BOUNDARY]); --- 15 unchanged lines hidden (view full) --- 320 if (i >= KERNEL_PGD_BOUNDARY) 321 memcpy(pmd, (pmd_t *)pgd_page_vaddr(swapper_pg_dir[i]), 322 sizeof(pmd_t) * PTRS_PER_PMD); 323 324 pud_populate(mm, pud, pmd); 325 } 326} 327 | 297 298 if (!boot_cpu_has(X86_FEATURE_PTI)) 299 return; 300 301 pgdp = kernel_to_user_pgdp(pgdp); 302 303 for (i = 0; i < PREALLOCATED_USER_PMDS; i++) 304 mop_up_one_pmd(mm, &pgdp[i + KERNEL_PGD_BOUNDARY]); --- 15 unchanged lines hidden (view full) --- 320 if (i >= KERNEL_PGD_BOUNDARY) 321 memcpy(pmd, (pmd_t *)pgd_page_vaddr(swapper_pg_dir[i]), 322 sizeof(pmd_t) * PTRS_PER_PMD); 323 324 pud_populate(mm, pud, pmd); 325 } 326} 327 |
328#ifdef CONFIG_PAGE_TABLE_ISOLATION | 328#ifdef CONFIG_MITIGATION_PAGE_TABLE_ISOLATION |
329static void pgd_prepopulate_user_pmd(struct mm_struct *mm, 330 pgd_t *k_pgd, pmd_t *pmds[]) 331{ 332 pgd_t *s_pgd = kernel_to_user_pgdp(swapper_pg_dir); 333 pgd_t *u_pgd = kernel_to_user_pgdp(k_pgd); 334 p4d_t *u_p4d; 335 pud_t *u_pud; 336 int i; --- 590 unchanged lines hidden --- | 329static void pgd_prepopulate_user_pmd(struct mm_struct *mm, 330 pgd_t *k_pgd, pmd_t *pmds[]) 331{ 332 pgd_t *s_pgd = kernel_to_user_pgdp(swapper_pg_dir); 333 pgd_t *u_pgd = kernel_to_user_pgdp(k_pgd); 334 p4d_t *u_p4d; 335 pud_t *u_pud; 336 int i; --- 590 unchanged lines hidden --- |