Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1362843 > unrolled thread
| Started by | Paolo Bonzini <pbonzini@redhat.com> |
|---|---|
| First post | 2016-03-22 17:50 +0100 |
| Last post | 2016-03-23 03:30 +0100 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH] KVM: page_track: fix access to NULL slot Paolo Bonzini <pbonzini@redhat.com> - 2016-03-22 17:50 +0100
Re: [PATCH] KVM: page_track: fix access to NULL slot Xiao Guangrong <guangrong.xiao@linux.intel.com> - 2016-03-23 03:30 +0100
| From | Paolo Bonzini <pbonzini@redhat.com> |
|---|---|
| Date | 2016-03-22 17:50 +0100 |
| Subject | [PATCH] KVM: page_track: fix access to NULL slot |
| Message-ID | <rfxFf-7gW-3@gated-at.bofh.it> |
This happens when doing the reboot test from virt-tests:
[ 131.833653] BUG: unable to handle kernel NULL pointer dereference at (null)
[ 131.842461] IP: [<ffffffffa0950087>] kvm_page_track_is_active+0x17/0x60 [kvm]
[ 131.850500] PGD 0
[ 131.852763] Oops: 0000 [#1] SMP
[ 132.007188] task: ffff880075fbc500 ti: ffff880850a3c000 task.ti: ffff880850a3c000
[ 132.138891] Call Trace:
[ 132.141639] [<ffffffffa092bd11>] page_fault_handle_page_track+0x31/0x40 [kvm]
[ 132.149732] [<ffffffffa093380f>] paging64_page_fault+0xff/0x910 [kvm]
[ 132.172159] [<ffffffffa092c734>] kvm_mmu_page_fault+0x64/0x110 [kvm]
[ 132.179372] [<ffffffffa06743c2>] handle_exception+0x1b2/0x430 [kvm_intel]
[ 132.187072] [<ffffffffa067a301>] vmx_handle_exit+0x1e1/0xc50 [kvm_intel]
...
Cc: Xiao Guangrong <guangrong.xiao@linux.intel.com>
Fixes: 3d0c27ad6ee465f174b09ee99fcaf189c57d567a
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
arch/x86/kvm/page_track.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kvm/page_track.c b/arch/x86/kvm/page_track.c
index 11f76436f74f..b431539c3714 100644
--- a/arch/x86/kvm/page_track.c
+++ b/arch/x86/kvm/page_track.c
@@ -142,12 +142,17 @@ void kvm_slot_page_track_remove_page(struct kvm *kvm,
bool kvm_page_track_is_active(struct kvm_vcpu *vcpu, gfn_t gfn,
enum kvm_page_track_mode mode)
{
- struct kvm_memory_slot *slot = kvm_vcpu_gfn_to_memslot(vcpu, gfn);
- int index = gfn_to_index(gfn, slot->base_gfn, PT_PAGE_TABLE_LEVEL);
+ struct kvm_memory_slot *slot;
+ int index;
if (WARN_ON(!page_track_mode_is_valid(mode)))
return false;
+ slot = kvm_vcpu_gfn_to_memslot(vcpu, gfn);
+ if (!slot)
+ return false;
+
+ index = gfn_to_index(gfn, slot->base_gfn, PT_PAGE_TABLE_LEVEL);
return !!ACCESS_ONCE(slot->arch.gfn_track[mode][index]);
}
--
1.8.3.1
[toc] | [next] | [standalone]
| From | Xiao Guangrong <guangrong.xiao@linux.intel.com> |
|---|---|
| Date | 2016-03-23 03:30 +0100 |
| Message-ID | <rfGIy-54a-11@gated-at.bofh.it> |
| In reply to | #1362843 |
On 03/23/2016 12:40 AM, Paolo Bonzini wrote: > This happens when doing the reboot test from virt-tests: > > [ 131.833653] BUG: unable to handle kernel NULL pointer dereference at (null) > [ 131.842461] IP: [<ffffffffa0950087>] kvm_page_track_is_active+0x17/0x60 [kvm] > [ 131.850500] PGD 0 > [ 131.852763] Oops: 0000 [#1] SMP > [ 132.007188] task: ffff880075fbc500 ti: ffff880850a3c000 task.ti: ffff880850a3c000 > [ 132.138891] Call Trace: > [ 132.141639] [<ffffffffa092bd11>] page_fault_handle_page_track+0x31/0x40 [kvm] > [ 132.149732] [<ffffffffa093380f>] paging64_page_fault+0xff/0x910 [kvm] > [ 132.172159] [<ffffffffa092c734>] kvm_mmu_page_fault+0x64/0x110 [kvm] > [ 132.179372] [<ffffffffa06743c2>] handle_exception+0x1b2/0x430 [kvm_intel] > [ 132.187072] [<ffffffffa067a301>] vmx_handle_exit+0x1e1/0xc50 [kvm_intel] > ... Thank you for fixing it, Paolo! Reviewed-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web