diff options
author | Uri Lublin <uril@qumranet.com> | 2007-10-30 04:42:09 -0400 |
---|---|---|
committer | Avi Kivity <avi@qumranet.com> | 2008-01-30 10:52:59 -0500 |
commit | 3b6fff198c2ae3ca87ee8c9103d52ac9e8f40dd5 (patch) | |
tree | e055c45fe6844d26539293708815c69c0268ef2d /drivers/kvm | |
parent | 9f1ef3f8f5f8ade2561d969181b152c225b82a3e (diff) |
KVM: Make mark_page_dirty() work for aliased pages too.
Recommended by Izik Eidus.
Signed-off-by: Uri Lublin <uril@qumranet.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'drivers/kvm')
-rw-r--r-- | drivers/kvm/kvm_main.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c index 2025cdfb4593..cac66d505f57 100644 --- a/drivers/kvm/kvm_main.c +++ b/drivers/kvm/kvm_main.c | |||
@@ -796,11 +796,11 @@ int kvm_clear_guest(struct kvm *kvm, gpa_t gpa, unsigned long len) | |||
796 | } | 796 | } |
797 | EXPORT_SYMBOL_GPL(kvm_clear_guest); | 797 | EXPORT_SYMBOL_GPL(kvm_clear_guest); |
798 | 798 | ||
799 | /* WARNING: Does not work on aliased pages. */ | ||
800 | void mark_page_dirty(struct kvm *kvm, gfn_t gfn) | 799 | void mark_page_dirty(struct kvm *kvm, gfn_t gfn) |
801 | { | 800 | { |
802 | struct kvm_memory_slot *memslot; | 801 | struct kvm_memory_slot *memslot; |
803 | 802 | ||
803 | gfn = unalias_gfn(kvm, gfn); | ||
804 | memslot = __gfn_to_memslot(kvm, gfn); | 804 | memslot = __gfn_to_memslot(kvm, gfn); |
805 | if (memslot && memslot->dirty_bitmap) { | 805 | if (memslot && memslot->dirty_bitmap) { |
806 | unsigned long rel_gfn = gfn - memslot->base_gfn; | 806 | unsigned long rel_gfn = gfn - memslot->base_gfn; |