s390/mm: convert pte_val()/pXd_val() into functions
Disallow constructs like this: pte_val(*pte) = __pa(addr) | prot; which would directly write into a page table. Users are supposed to use the set_pte()/set_pXd() primitives, which guarantee block concurrent (aka atomic) writes. Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Reviewed-by: Alexander Gordeev <agordeev@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
e1fc74ff23
commit
966ffbd861
|
@ -90,11 +90,31 @@ typedef pte_t *pgtable_t;
|
||||||
|
|
||||||
#define pgprot_val(x) ((x).pgprot)
|
#define pgprot_val(x) ((x).pgprot)
|
||||||
#define pgste_val(x) ((x).pgste)
|
#define pgste_val(x) ((x).pgste)
|
||||||
#define pte_val(x) ((x).pte)
|
|
||||||
#define pmd_val(x) ((x).pmd)
|
static inline unsigned long pte_val(pte_t pte)
|
||||||
#define pud_val(x) ((x).pud)
|
{
|
||||||
#define p4d_val(x) ((x).p4d)
|
return pte.pte;
|
||||||
#define pgd_val(x) ((x).pgd)
|
}
|
||||||
|
|
||||||
|
static inline unsigned long pmd_val(pmd_t pmd)
|
||||||
|
{
|
||||||
|
return pmd.pmd;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline unsigned long pud_val(pud_t pud)
|
||||||
|
{
|
||||||
|
return pud.pud;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline unsigned long p4d_val(p4d_t p4d)
|
||||||
|
{
|
||||||
|
return p4d.p4d;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline unsigned long pgd_val(pgd_t pgd)
|
||||||
|
{
|
||||||
|
return pgd.pgd;
|
||||||
|
}
|
||||||
|
|
||||||
#define __pgste(x) ((pgste_t) { (x) } )
|
#define __pgste(x) ((pgste_t) { (x) } )
|
||||||
#define __pte(x) ((pte_t) { (x) } )
|
#define __pte(x) ((pte_t) { (x) } )
|
||||||
|
|
Loading…
Reference in New Issue