Magicboiz wrote:
> with VNC option, we had better luck: we got an Oops!!:
>
> Jun 14 17:37:35 linux kernel: [ 575.212000] BUG: unable to handle
> kernel NULL pointer dereference at virtual address 00000024
> Jun 14 17:37:35 linux kernel: [ 575.212000] EIP is at mmu_free_roots
> +0x54/0x90 [kvm]
>
Does the attached patch help? (cd to kernel/ and apply with 'patch -p3')
--
Do not meddle in the internals of kernels, for they are subtle and quick to
panic.
diff --git a/drivers/kvm/mmu.c b/drivers/kvm/mmu.c
index ad50cfd..f4cb731 100644
--- a/drivers/kvm/mmu.c
+++ b/drivers/kvm/mmu.c
@@ -859,7 +859,7 @@ static void mmu_free_roots(struct kvm_vcpu *vcpu)
page = page_header(root);
--page->root_count;
}
- vcpu->mmu.pae_root[i] = INVALID_PAGE;
+ vcpu->mmu.pae_root[i] = 0;
}
vcpu->mmu.root_hpa = INVALID_PAGE;
}
@@ -888,12 +888,10 @@ static void mmu_alloc_roots(struct kvm_vcpu *vcpu)
for (i = 0; i < 4; ++i) {
hpa_t root = vcpu->mmu.pae_root[i];
- ASSERT(!VALID_PAGE(root));
+ ASSERT(!root);
if (vcpu->mmu.root_level == PT32E_ROOT_LEVEL) {
- if (!is_present_pte(vcpu->pdptrs[i])) {
- vcpu->mmu.pae_root[i] = 0;
+ if (!is_present_pte(vcpu->pdptrs[i]))
continue;
- }
root_gfn = vcpu->pdptrs[i] >> PAGE_SHIFT;
} else if (vcpu->mmu.root_level == 0)
root_gfn = 0;
@@ -1241,7 +1239,7 @@ static int alloc_mmu_pages(struct kvm_vcpu *vcpu)
goto error_1;
vcpu->mmu.pae_root = page_address(page);
for (i = 0; i < 4; ++i)
- vcpu->mmu.pae_root[i] = INVALID_PAGE;
+ vcpu->mmu.pae_root[i] = 0;
return 0;
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel