From 2894a0e214cd340187c1692eb3f8aba1f964f7d0 Mon Sep 17 00:00:00 2001 From: Avi Kivity Date: Mon, 21 Jun 2010 10:57:45 +0300 Subject: [PATCH] --- yaml --- r: 202365 b: refs/heads/master c: 7ac77099ce88a0c31b75acd0ec5ef3da4415a6d8 h: refs/heads/master i: 202363: 3a6641475933344291ea071a9adbcda358e7ddee v: v3 --- [refs] | 2 +- trunk/arch/x86/kvm/x86.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 7ba0c490efc5..6efc0fc9a148 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e36d96f7cfaa71870c407131eb4fbd38ea285c01 +refs/heads/master: 7ac77099ce88a0c31b75acd0ec5ef3da4415a6d8 diff --git a/trunk/arch/x86/kvm/x86.c b/trunk/arch/x86/kvm/x86.c index 7ef44107a14a..68be38e233f5 100644 --- a/trunk/arch/x86/kvm/x86.c +++ b/trunk/arch/x86/kvm/x86.c @@ -5491,6 +5491,11 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, int user_alloc) { int npages = memslot->npages; + int map_flags = MAP_PRIVATE | MAP_ANONYMOUS; + + /* Prevent internal slot pages from being moved by fork()/COW. */ + if (memslot->id >= KVM_MEMORY_SLOTS) + map_flags = MAP_SHARED | MAP_ANONYMOUS; /*To keep backward compatibility with older userspace, *x86 needs to hanlde !user_alloc case. @@ -5503,7 +5508,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, userspace_addr = do_mmap(NULL, 0, npages * PAGE_SIZE, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANONYMOUS, + map_flags, 0); up_write(¤t->mm->mmap_sem);