diff options
author | Wei Yongjun <yjwei@cn.fujitsu.com> | 2010-02-09 03:33:03 +0100 |
---|---|---|
committer | Marcelo Tosatti <mtosatti@redhat.com> | 2010-03-01 16:36:10 +0100 |
commit | 72bb2fcd23afe8db53b47e8f9edd736c517ba532 (patch) | |
tree | b79884bcb50077fec7cb5615178cacbbf9e6ce04 /arch/x86/kvm/i8259.c | |
parent | KVM: kvm->arch.vioapic should be NULL if kvm_ioapic_init() failure (diff) | |
download | linux-72bb2fcd23afe8db53b47e8f9edd736c517ba532.tar.xz linux-72bb2fcd23afe8db53b47e8f9edd736c517ba532.zip |
KVM: cleanup the failure path of KVM_CREATE_IRQCHIP ioctrl
If we fail to init ioapic device or the fail to setup the default irq
routing, the device register by kvm_create_pic() and kvm_ioapic_init()
remain unregister. This patch fixed to do this.
Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm/i8259.c')
-rw-r--r-- | arch/x86/kvm/i8259.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/x86/kvm/i8259.c b/arch/x86/kvm/i8259.c index d5753a75d58c..a3711f9e580f 100644 --- a/arch/x86/kvm/i8259.c +++ b/arch/x86/kvm/i8259.c @@ -543,3 +543,14 @@ struct kvm_pic *kvm_create_pic(struct kvm *kvm) return s; } + +void kvm_destroy_pic(struct kvm *kvm) +{ + struct kvm_pic *vpic = kvm->arch.vpic; + + if (vpic) { + kvm_io_bus_unregister_dev(kvm, KVM_PIO_BUS, &vpic->dev); + kvm->arch.vpic = NULL; + kfree(vpic); + } +} |