|
@@ -55,15 +55,15 @@ struct mm_struct;
|
|
|
void set_pte_vaddr_p4d(p4d_t *p4d_page, unsigned long vaddr, pte_t new_pte);
|
|
|
void set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte);
|
|
|
|
|
|
-static inline void native_pte_clear(struct mm_struct *mm, unsigned long addr,
|
|
|
- pte_t *ptep)
|
|
|
+static inline void native_set_pte(pte_t *ptep, pte_t pte)
|
|
|
{
|
|
|
- *ptep = native_make_pte(0);
|
|
|
+ WRITE_ONCE(*ptep, pte);
|
|
|
}
|
|
|
|
|
|
-static inline void native_set_pte(pte_t *ptep, pte_t pte)
|
|
|
+static inline void native_pte_clear(struct mm_struct *mm, unsigned long addr,
|
|
|
+ pte_t *ptep)
|
|
|
{
|
|
|
- *ptep = pte;
|
|
|
+ native_set_pte(ptep, native_make_pte(0));
|
|
|
}
|
|
|
|
|
|
static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
|
|
@@ -73,7 +73,7 @@ static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
|
|
|
|
|
|
static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
|
|
|
{
|
|
|
- *pmdp = pmd;
|
|
|
+ WRITE_ONCE(*pmdp, pmd);
|
|
|
}
|
|
|
|
|
|
static inline void native_pmd_clear(pmd_t *pmd)
|
|
@@ -109,7 +109,7 @@ static inline pmd_t native_pmdp_get_and_clear(pmd_t *xp)
|
|
|
|
|
|
static inline void native_set_pud(pud_t *pudp, pud_t pud)
|
|
|
{
|
|
|
- *pudp = pud;
|
|
|
+ WRITE_ONCE(*pudp, pud);
|
|
|
}
|
|
|
|
|
|
static inline void native_pud_clear(pud_t *pud)
|
|
@@ -137,13 +137,13 @@ static inline void native_set_p4d(p4d_t *p4dp, p4d_t p4d)
|
|
|
pgd_t pgd;
|
|
|
|
|
|
if (pgtable_l5_enabled() || !IS_ENABLED(CONFIG_PAGE_TABLE_ISOLATION)) {
|
|
|
- *p4dp = p4d;
|
|
|
+ WRITE_ONCE(*p4dp, p4d);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
pgd = native_make_pgd(native_p4d_val(p4d));
|
|
|
pgd = pti_set_user_pgtbl((pgd_t *)p4dp, pgd);
|
|
|
- *p4dp = native_make_p4d(native_pgd_val(pgd));
|
|
|
+ WRITE_ONCE(*p4dp, native_make_p4d(native_pgd_val(pgd)));
|
|
|
}
|
|
|
|
|
|
static inline void native_p4d_clear(p4d_t *p4d)
|
|
@@ -153,7 +153,7 @@ static inline void native_p4d_clear(p4d_t *p4d)
|
|
|
|
|
|
static inline void native_set_pgd(pgd_t *pgdp, pgd_t pgd)
|
|
|
{
|
|
|
- *pgdp = pti_set_user_pgtbl(pgdp, pgd);
|
|
|
+ WRITE_ONCE(*pgdp, pti_set_user_pgtbl(pgdp, pgd));
|
|
|
}
|
|
|
|
|
|
static inline void native_pgd_clear(pgd_t *pgd)
|