Correctly initialize msr list in KVM
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 13 Dec 2008 20:41:58 +0000 (20:41 +0000)
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 13 Dec 2008 20:41:58 +0000 (20:41 +0000)
I believe this was spotted by Gerd Hoffman but I can't find his patch
now.  This will cause very subtle corruption on the heap because we
don't allocate the appropriately sized buffer.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6017 c046a42c-6fe2-441c-8c8c-71466251a162

target-i386/kvm.c

index 5e051c5..d8c89ba 100644 (file)
@@ -90,11 +90,11 @@ static int kvm_has_msr_star(CPUState *env)
 
         /* Obtain MSR list from KVM.  These are the MSRs that we must
          * save/restore */
+        msr_list.nmsrs = 0;
         ret = kvm_ioctl(env->kvm_state, KVM_GET_MSR_INDEX_LIST, &msr_list);
         if (ret < 0)
             return 0;
 
-        msr_list.nmsrs = 0;
         kvm_msr_list = qemu_mallocz(sizeof(msr_list) +
                                     msr_list.nmsrs * sizeof(msr_list.indices[0]));
         if (kvm_msr_list == NULL)