summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorTakuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>2010-04-12 12:35:35 +0200
committerAvi Kivity <avi@redhat.com>2010-04-20 12:06:55 +0200
commit87bf6e7de1134f48681fd2ce4b7c1ec45458cb6d (patch)
treeae8ce63cecab98c036c0d76422de42cf78e042f4 /include
parentKVM: MMU: fix kvm_mmu_zap_page() and its calling path (diff)
downloadlinux-87bf6e7de1134f48681fd2ce4b7c1ec45458cb6d.tar.xz
linux-87bf6e7de1134f48681fd2ce4b7c1ec45458cb6d.zip
KVM: fix the handling of dirty bitmaps to avoid overflows
Int is not long enough to store the size of a dirty bitmap. This patch fixes this problem with the introduction of a wrapper function to calculate the sizes of dirty bitmaps. Note: in mark_page_dirty(), we have to consider the fact that __set_bit() takes the offset as int, not long. Signed-off-by: Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/kvm_host.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index a3fd0f91d943..9ad825e1c79b 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -119,6 +119,11 @@ struct kvm_memory_slot {
int user_alloc;
};
+static inline unsigned long kvm_dirty_bitmap_bytes(struct kvm_memory_slot *memslot)
+{
+ return ALIGN(memslot->npages, BITS_PER_LONG) / 8;
+}
+
struct kvm_kernel_irq_routing_entry {
u32 gsi;
u32 type;