aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kvm/x86.c
diff options
context:
space:
mode:
authorMark McLoughlin <markmc@redhat.com>2009-05-12 07:36:44 -0400
committerAvi Kivity <avi@redhat.com>2009-09-10 01:32:39 -0400
commitcb007648de83cf226d69ec76e1c01848b4e8e49f (patch)
treeddbffb8ad08a1805200ca61ba22b98ec086d0901 /arch/x86/kvm/x86.c
parent60af2ecdc53af5b941e4a2eb99862a7ccf3ed7c8 (diff)
KVM: fix cpuid E2BIG handling for extended request types
If we run out of cpuid entries for extended request types we should return -E2BIG, just like we do for the standard request types. Signed-off-by: Mark McLoughlin <markmc@redhat.com> Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm/x86.c')
-rw-r--r--arch/x86/kvm/x86.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index a93ba37eb52c..25a1c5739dfc 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1506,6 +1506,10 @@ static int kvm_dev_ioctl_get_supported_cpuid(struct kvm_cpuid2 *cpuid,
1506 for (func = 0x80000001; func <= limit && nent < cpuid->nent; ++func) 1506 for (func = 0x80000001; func <= limit && nent < cpuid->nent; ++func)
1507 do_cpuid_ent(&cpuid_entries[nent], func, 0, 1507 do_cpuid_ent(&cpuid_entries[nent], func, 0,
1508 &nent, cpuid->nent); 1508 &nent, cpuid->nent);
1509 r = -E2BIG;
1510 if (nent >= cpuid->nent)
1511 goto out_free;
1512
1509 r = -EFAULT; 1513 r = -EFAULT;
1510 if (copy_to_user(entries, cpuid_entries, 1514 if (copy_to_user(entries, cpuid_entries,
1511 nent * sizeof(struct kvm_cpuid_entry2))) 1515 nent * sizeof(struct kvm_cpuid_entry2)))