From: Jack Lange Date: Tue, 24 Jun 2008 04:06:44 +0000 (+0000) Subject: fixed page table deletion error X-Git-Tag: boot386puppy-26-to-ide~12 X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=commitdiff_plain;h=0e1c44d98d3dd40bd870278d49122e0173b12b73 fixed page table deletion error --- diff --git a/palacios/src/palacios/vmm_ctrl_regs.c b/palacios/src/palacios/vmm_ctrl_regs.c index 7d59b82..0d29092 100644 --- a/palacios/src/palacios/vmm_ctrl_regs.c +++ b/palacios/src/palacios/vmm_ctrl_regs.c @@ -450,9 +450,12 @@ int handle_cr3_write(struct guest_info * info) { struct cr3_32 * shadow_cr3 = (struct cr3_32 *)&(info->shdw_pg_state.shadow_cr3); struct cr3_32 * guest_cr3 = (struct cr3_32 *)&(info->shdw_pg_state.guest_cr3); + PrintDebug("fooo1\n"); + /* Delete the current Page Tables */ - delete_page_tables_pde32((pde32_t *)CR3_TO_PDE32(shadow_cr3)); + delete_page_tables_pde32((pde32_t *)CR3_TO_PDE32(*(uint_t*)shadow_cr3)); + PrintDebug("fooo2\n"); *guest_cr3 = *new_cr3; // Something like this diff --git a/palacios/src/palacios/vmm_paging.c b/palacios/src/palacios/vmm_paging.c index a20e0bf..7c8d8af 100644 --- a/palacios/src/palacios/vmm_paging.c +++ b/palacios/src/palacios/vmm_paging.c @@ -8,7 +8,7 @@ extern struct vmm_os_hooks * os_hooks; void delete_page_tables_pde32(pde32_t * pde) { - int i, j; + int i;//, j; if (pde == NULL) { return; @@ -17,17 +17,20 @@ void delete_page_tables_pde32(pde32_t * pde) { for (i = 0; (i < MAX_PDE32_ENTRIES); i++) { if (pde[i].present) { pte32_t * pte = (pte32_t *)(pde[i].pt_base_addr << PAGE_POWER); - - for (j = 0; (j < MAX_PTE32_ENTRIES); j++) { + + /* + for (j = 0; (j < MAX_PTE32_ENTRIES); j++) { if ((pte[j].present)) { - os_hooks->free_page((void *)(pte[j].page_base_addr << PAGE_POWER)); + os_hooks->free_page((void *)(pte[j].page_base_addr << PAGE_POWER)); } - } - + } + */ + //PrintDebug("Deleting PTE %d (%x)\n", i, pte); os_hooks->free_page(pte); } } + // PrintDebug("Deleting PDE (%x)\n", pde); os_hooks->free_page(pde); }