xen: fix mismerge in masking pte flags
Looks like a mismerge/misapply dropped one of the cases of pte flag masking for Xen. Also, only mask the flags for present ptes. Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
261a5ec36b
commit
a89780f3b8
@ -241,8 +241,10 @@ unsigned long long xen_pgd_val(pgd_t pgd)
|
|||||||
|
|
||||||
pte_t xen_make_pte(unsigned long long pte)
|
pte_t xen_make_pte(unsigned long long pte)
|
||||||
{
|
{
|
||||||
if (pte & 1)
|
if (pte & _PAGE_PRESENT) {
|
||||||
pte = phys_to_machine(XPADDR(pte)).maddr;
|
pte = phys_to_machine(XPADDR(pte)).maddr;
|
||||||
|
pte &= ~(_PAGE_PCD | _PAGE_PWT);
|
||||||
|
}
|
||||||
|
|
||||||
return (pte_t){ .pte = pte };
|
return (pte_t){ .pte = pte };
|
||||||
}
|
}
|
||||||
@ -288,10 +290,10 @@ unsigned long xen_pgd_val(pgd_t pgd)
|
|||||||
|
|
||||||
pte_t xen_make_pte(unsigned long pte)
|
pte_t xen_make_pte(unsigned long pte)
|
||||||
{
|
{
|
||||||
if (pte & _PAGE_PRESENT)
|
if (pte & _PAGE_PRESENT) {
|
||||||
pte = phys_to_machine(XPADDR(pte)).maddr;
|
pte = phys_to_machine(XPADDR(pte)).maddr;
|
||||||
|
pte &= ~(_PAGE_PCD | _PAGE_PWT);
|
||||||
pte &= ~(_PAGE_PCD | _PAGE_PWT);
|
}
|
||||||
|
|
||||||
return (pte_t){ pte };
|
return (pte_t){ pte };
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user