KVM: x86: Catch potential overrun in MCE setup
PATCH 1/1 KVM: x86: Catch potential overrun in MCE setup
We only allocate memory for 32 MCE banks (KVM_MAX_MCE_BANKS) but we allow user space to fill up to 255 on setup (mcg_cap & 0xff), corrupting kernel memory. Catch these overflows.
Signed-off-by Jan Kiszka <[email protected]>
---
arch/x86/kvm/x86.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
arch/x86/kvm/x86.c +1 -1
@@ -1720,7 +1720,7 @@ static int kvm_vcpu_ioctl_x86_setup_mce(struct kvm_vcpu *vcpu,unsigned bank_num = mcg_cap &0xff , bank; r = -EINVAL ; -if (!bank_num) +if (!bank_num || bank_num >=KVM_MAX_MCE_BANKS ) goto out;if (mcg_cap & ~(KVM_MCE_CAP_SUPPORTED |0xff |0xff0000 )) goto out;
Marcelo Tosatti
AppliedQuoted 5 lines · Jan Kiszka
We only allocate memory for 32 MCE banks (
KVM_MAX_MCE_BANKS) but we allow user space to fill up to 255 on setup (mcg_cap&0xff), corrupting kernel memory. Catch these overflows.Signed-off-by Jan Kiszka <[email protected]>
Applied, thanks.