kernel/arch: Add missing handling for _flags == NULL in the PAE UnmapPage.
This was missed in 7651b97c0a.
This commit is contained in:
@@ -620,12 +620,21 @@ X86VMTranslationMapPAE::UnmapPage(VMArea* area, addr_t address,
|
|||||||
// (cf. pmap_remove_all()), unless I've missed something.
|
// (cf. pmap_remove_all()), unless I've missed something.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_flags == NULL) {
|
||||||
locker.Detach();
|
locker.Detach();
|
||||||
// PageUnmapped() will unlock for us
|
// PageUnmapped() will unlock for us
|
||||||
|
|
||||||
PageUnmapped(area, (oldEntry & X86_PAE_PTE_ADDRESS_MASK) / B_PAGE_SIZE,
|
PageUnmapped(area, (oldEntry & X86_PAE_PTE_ADDRESS_MASK) / B_PAGE_SIZE,
|
||||||
(oldEntry & X86_PAE_PTE_ACCESSED) != 0,
|
(oldEntry & X86_PAE_PTE_ACCESSED) != 0,
|
||||||
(oldEntry & X86_PAE_PTE_DIRTY) != 0, updatePageQueue);
|
(oldEntry & X86_PAE_PTE_DIRTY) != 0, updatePageQueue);
|
||||||
|
} else {
|
||||||
|
uint32 flags = PAGE_PRESENT;
|
||||||
|
if ((oldEntry & X86_PAE_PTE_ACCESSED) != 0)
|
||||||
|
flags |= PAGE_ACCESSED;
|
||||||
|
if ((oldEntry & X86_PAE_PTE_DIRTY) != 0)
|
||||||
|
flags |= PAGE_MODIFIED;
|
||||||
|
*_flags = flags;
|
||||||
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user