VMM - free_page deos not unset P2 entry if not asked to

This commit is contained in:
Thomas Lovén 2017-12-29 23:35:34 +01:00
parent 3134a1d6ad
commit 992930d293
2 changed files with 11 additions and 0 deletions

View File

@ -83,6 +83,8 @@ void free_page(void *P4, uintptr_t addr, int free)
return; return;
P1e(P4, addr).value = 0; P1e(P4, addr).value = 0;
if(!free) return;
union PTE *pt; union PTE *pt;
pt = PT(P2e(P4, addr).value); pt = PT(P2e(P4, addr).value);

View File

@ -146,3 +146,12 @@ TEST(free_page_unsets_P2_entry_if_P1_is_empty)
ASSERT_EQ_PTR(p2[3], 0); ASSERT_EQ_PTR(p2[3], 0);
} }
TEST(free_page_does_not_unset_P2_entry_if_not_asked_to)
{
BUILD_PT(1,2,3);
p1[4] = PAGE_PRESENT;
free_page(p4, ADDR1234, 0);
ASSERT_NEQ_PTR(p2[3], 0);
}