diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2021-04-14 08:50:46 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2021-04-14 08:50:46 -0700 | 
| commit | 2558258d78873998b8cd81ce7661dc68541b8b51 (patch) | |
| tree | ac3bba36709063467350e63b1d847286c8a91848 | |
| parent | 50987beca096a7ed4f453a6da245fd6a2fadedeb (diff) | |
| parent | 04c4f2ee3f68c9a4bf1653d15f1a9a435ae33f7a (diff) | |
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull kvm fix from Paolo Bonzini:
 "Fix for a possible out-of-bounds access"
* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
  KVM: VMX: Don't use vcpu->run->internal.ndata as an array index
| -rw-r--r-- | arch/x86/kvm/vmx/vmx.c | 10 | 
1 files changed, 5 insertions, 5 deletions
| diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 32cf8287d4a7..29b40e092d13 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -6027,19 +6027,19 @@ static int __vmx_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)  	     exit_reason.basic != EXIT_REASON_PML_FULL &&  	     exit_reason.basic != EXIT_REASON_APIC_ACCESS &&  	     exit_reason.basic != EXIT_REASON_TASK_SWITCH)) { +		int ndata = 3; +  		vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR;  		vcpu->run->internal.suberror = KVM_INTERNAL_ERROR_DELIVERY_EV; -		vcpu->run->internal.ndata = 3;  		vcpu->run->internal.data[0] = vectoring_info;  		vcpu->run->internal.data[1] = exit_reason.full;  		vcpu->run->internal.data[2] = vcpu->arch.exit_qualification;  		if (exit_reason.basic == EXIT_REASON_EPT_MISCONFIG) { -			vcpu->run->internal.ndata++; -			vcpu->run->internal.data[3] = +			vcpu->run->internal.data[ndata++] =  				vmcs_read64(GUEST_PHYSICAL_ADDRESS);  		} -		vcpu->run->internal.data[vcpu->run->internal.ndata++] = -			vcpu->arch.last_vmentry_cpu; +		vcpu->run->internal.data[ndata++] = vcpu->arch.last_vmentry_cpu; +		vcpu->run->internal.ndata = ndata;  		return 0;  	} | 
