KVM: x86: Propagate fpu_alloc errors
PATCH 1/1 KVM: x86: Propagate fpu_alloc errors
Memory allocation may fail. Propagate such errors.
Signed-off-by Jan Kiszka <[email protected]>
--- arch/x86/include/asm/kvm_host.h | 2 +- arch/x86/kvm/svm.c | 7 ++++++- arch/x86/kvm/vmx.c | 4 +++- arch/x86/kvm/x86.c | 11 +++++++++-- 4 files changed, 19 insertions(+), 5 deletions(-)
arch/x86/include/asm/kvm_host.h +1 -1
@@ -624,7 +624,7 @@ int kvm_pic_set_irq(void *opaque, int irq, int level);void kvm_inject_nmi (struct kvm_vcpu *vcpu); -void fx_init (struct kvm_vcpu *vcpu); +int fx_init (struct kvm_vcpu *vcpu);void kvm_mmu_flush_tlb (struct kvm_vcpu *vcpu); void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
arch/x86/kvm/svm.c +6 -1
@@ -903,13 +903,18 @@ static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id) svm->asid_generation =0 ;init_vmcb (svm); -fx_init (&svm->vcpu); + err =fx_init (&svm->vcpu); +if (err) + goto free_page4; + svm->vcpu.arch.apic_base =0xfee00000 |MSR_IA32_APICBASE_ENABLE ;if (kvm_vcpu_is_bsp (&svm->vcpu)) svm->vcpu.arch.apic_base |=MSR_IA32_APICBASE_BSP ;return &svm->vcpu; +free_page4: +__free_page (hsave_page); free_page3:__free_pages (nested_msrpm_pages,MSRPM_ALLOC_ORDER ); free_page2:
arch/x86/kvm/vmx.c +3 -1
@@ -2661,7 +2661,9 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu) msr |=MSR_IA32_APICBASE_BSP ;kvm_set_apic_base (&vmx->vcpu, msr); -fx_init (&vmx->vcpu); + ret =fx_init (&vmx->vcpu); +if (ret !=0 ) + goto out;seg_setup (VCPU_SREG_CS );/*
arch/x86/kvm/x86.c +9 -2
@@ -5113,12 +5113,19 @@ int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu)return 0 ; } -void fx_init (struct kvm_vcpu *vcpu) +int fx_init (struct kvm_vcpu *vcpu) { -fpu_alloc (&vcpu->arch.guest_fpu); +int err; + + err =fpu_alloc (&vcpu->arch.guest_fpu); +if (err) +return err; +fpu_finit (&vcpu->arch.guest_fpu); vcpu->arch.cr0 |=X86_CR0_ET ; + +return 0 ; }EXPORT_SYMBOL_GPL (fx_init);
Signature · 1 line
1.6.0.2
Quoted 4 lines · On Tuesday 25 May 2010 22:01:50 Jan Kiszka wrote:
Memory allocation may fail. Propagate such errors.
Signed-off-by Jan Kiszka <[email protected]>---
Reviewed-by Sheng Yang <[email protected]>
--
regards
Yang, Sheng
Quoted 83 lines
arch/x86/include/asm/kvm_host.h | 2 +- arch/x86/kvm/svm.c | 7 ++++++- arch/x86/kvm/vmx.c | 4 +++- arch/x86/kvm/x86.c | 11 +++++++++-- 4 files changed, 19 insertions(+), 5 deletions(-)(quoted diff) +0
-0
b/arch/x86/include/asm/kvm_host.hindex d08bb4a..0cd0f29 100644arch/x86/include/asm/kvm_host.h +1
-1@@ -624,7 +624,7 @@ int kvm_pic_set_irq(void *opaque, int irq, int level);void kvm_inject_nmi (struct kvm_vcpu *vcpu); -void fx_init (struct kvm_vcpu *vcpu); +int fx_init (struct kvm_vcpu *vcpu);void kvm_mmu_flush_tlb (struct kvm_vcpu *vcpu); void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,arch/x86/kvm/svm.c +6
-1@@ -903,13 +903,18 @@ static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id) svm->asid_generation = 0;init_vmcb (svm); -fx_init (&svm->vcpu); + err =fx_init (&svm->vcpu); +if (err) + goto free_page4; + svm->vcpu.arch.apic_base =0xfee00000 |MSR_IA32_APICBASE_ENABLE ;if (kvm_vcpu_is_bsp (&svm->vcpu)) svm->vcpu.arch.apic_base |=MSR_IA32_APICBASE_BSP ;return &svm->vcpu; +free_page4: +__free_page (hsave_page); free_page3:__free_pages (nested_msrpm_pages,MSRPM_ALLOC_ORDER ); free_page2:arch/x86/kvm/vmx.c +3
-1@@ -2661,7 +2661,9 @@ static int vmx_vcpu_reset(struct kvm_vcpu *vcpu) msr |=MSR_IA32_APICBASE_BSP ;kvm_set_apic_base (&vmx->vcpu, msr); -fx_init (&vmx->vcpu); + ret =fx_init (&vmx->vcpu); +if (ret !=0 ) + goto out;seg_setup (VCPU_SREG_CS );/* arch/x86/kvm/x86.c +9
-2@@ -5113,12 +5113,19 @@ int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) return 0; } -void fx_init (struct kvm_vcpu *vcpu) +int fx_init (struct kvm_vcpu *vcpu) { -fpu_alloc (&vcpu->arch.guest_fpu); +int err; + + err =fpu_alloc (&vcpu->arch.guest_fpu); +if (err) +return err; +fpu_finit (&vcpu->arch.guest_fpu); vcpu->arch.cr0 |=X86_CR0_ET ; + +return 0 ; }EXPORT_SYMBOL_GPL (fx_init);
Avi Kivity
AppliedQuoted 3 lines · Jan Kiszka
Memory allocation may fail. Propagate such errors.
Applied, thanks.
Quoted 7 lines
Signed-off-by Jan Kiszka<[email protected]>--- arch/x86/include/asm/kvm_host.h | 2 +- arch/x86/kvm/svm.c | 7 ++++++- arch/x86/kvm/vmx.c | 4 +++- arch/x86/kvm/x86.c | 11 +++++++++--
An indication that fpu init should be in common code...
Signature · 1 line
error compiling committee.c: too many arguments to function