On Tuesday 25 May 2010 22:01:50 Jan Kiszka wrote: > Memory allocation may fail. Propagate such errors. > > Signed-off-by: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> > --- Reviewed-by: Sheng Yang <sheng@xxxxxxxxxxxxxxx> -- regards Yang, Sheng > 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(-) > > diff --git a/arch/x86/include/asm/kvm_host.h > b/arch/x86/include/asm/kvm_host.h index d08bb4a..0cd0f29 100644 > --- a/arch/x86/include/asm/kvm_host.h > +++ b/arch/x86/include/asm/kvm_host.h > @@ -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, > diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c > index 4af2c12..5f25e59 100644 > --- a/arch/x86/kvm/svm.c > +++ b/arch/x86/kvm/svm.c > @@ -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: > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > index 99ae513..61bdae3 100644 > --- a/arch/x86/kvm/vmx.c > +++ b/arch/x86/kvm/vmx.c > @@ -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); > /* > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 7be1d36..e773d93 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -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); -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html