linux/arch/x86/kvm
Michael S. Tsirkin edde99ce05 KVM: Write protect memory after slot swap
I have observed the following bug trigger:

1. userspace calls GET_DIRTY_LOG
2. kvm_mmu_slot_remove_write_access is called and makes a page ro
3. page fault happens and makes the page writeable
   fault is logged in the bitmap appropriately
4. kvm_vm_ioctl_get_dirty_log swaps slot pointers

a lot of time passes

5. guest writes into the page
6. userspace calls GET_DIRTY_LOG

At point (5), bitmap is clean and page is writeable,
thus, guest modification of memory is not logged
and GET_DIRTY_LOG returns an empty bitmap.

The rule is that all pages are either dirty in the current bitmap,
or write-protected, which is violated here.

It seems that just moving kvm_mmu_slot_remove_write_access down
to after the slot pointer swap should fix this bug.

KVM-Stable-Tag.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
2010-11-05 14:42:25 -02:00
..
emulate.c KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
i8254.c KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
i8254.h KVM: x86: Introduce a workqueue to deliver PIT timer interrupts 2010-08-01 10:46:49 +03:00
i8259.c KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
irq.c KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
irq.h KVM: Convert PIC lock from raw spinlock to ordinary spinlock 2010-10-24 10:52:56 +02:00
Kconfig KVM: MMU: support disable/enable mmu audit dynamicly 2010-10-24 10:51:56 +02:00
kvm_cache_regs.h KVM: MMU: Introduce kvm_pdptr_read_mmu 2010-10-24 10:52:42 +02:00
kvm_timer.h KVM: arch/x86/kvm/kvm_timer.h checkpatch cleanup 2010-05-17 12:14:42 +03:00
lapic.c Merge branch 'kvm-updates/2.6.37' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2010-10-24 12:47:25 -07:00
lapic.h KVM: Add HYPER-V apic access MSRs 2010-03-01 12:36:00 -03:00
Makefile KVM: Move assigned device code to own file 2009-12-03 09:32:09 +02:00
mmu_audit.c KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
mmu.c KVM: MCE: Send SRAR SIGBUS directly 2010-10-24 10:53:15 +02:00
mmu.h KVM: MMU: Don't track nested fault info in error-code 2010-10-24 10:52:55 +02:00
mmutrace.h KVM: MMU: support disable/enable mmu audit dynamicly 2010-10-24 10:51:56 +02:00
paging_tmpl.h KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
svm.c KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
timer.c KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
trace.h KVM: Trace emulated instructions 2010-05-17 12:17:35 +03:00
tss.h KVM: x86: hardware task switching support 2008-04-27 12:00:39 +03:00
vmx.c KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
x86.c KVM: Write protect memory after slot swap 2010-11-05 14:42:25 -02:00
x86.h KVM: Add kvm_inject_realmode_interrupt() wrapper 2010-10-24 10:53:01 +02:00