kvm, cpuid: Fix sparse warning
authorBorislav Petkov <bp@suse.de>
Wed, 6 Nov 2013 14:46:02 +0000 (15:46 +0100)
committerGleb Natapov <gleb@redhat.com>
Thu, 7 Nov 2013 10:27:46 +0000 (12:27 +0200)
We need to copy padding to kernel space first before looking at it.

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Gleb Natapov <gleb@redhat.com>
arch/x86/kvm/cpuid.c

index 8f66fba..c697625 100644 (file)
@@ -564,6 +564,7 @@ static bool sanity_check_entries(struct kvm_cpuid_entry2 __user *entries,
                                 __u32 num_entries, unsigned int ioctl_type)
 {
        int i;
+       __u32 pad[3];
 
        if (ioctl_type != KVM_GET_EMULATED_CPUID)
                return false;
@@ -577,9 +578,10 @@ static bool sanity_check_entries(struct kvm_cpuid_entry2 __user *entries,
         * sheds a tear.
         */
        for (i = 0; i < num_entries; i++) {
-               if (entries[i].padding[0] ||
-                   entries[i].padding[1] ||
-                   entries[i].padding[2])
+               if (copy_from_user(pad, entries[i].padding, sizeof(pad)))
+                       return true;
+
+               if (pad[0] || pad[1] || pad[2])
                        return true;
        }
        return false;