summaryrefslogtreecommitdiff
path: root/drivers/kvm
diff options
context:
space:
mode:
authorAvi Kivity <avi@qumranet.com>2007-03-01 19:21:03 +0200
committerAvi Kivity <avi@qumranet.com>2007-03-18 10:49:06 +0200
commitca45aaae1ef98890ac4e3ee48d65aa22401fd1dc (patch)
tree932e158722cf96b9090e36e21449f10f6f7c2525 /drivers/kvm
parentb720a3be1abd0cb5b9b530c0a1b4044fec4de60e (diff)
downloadlinux-3.10-ca45aaae1ef98890ac4e3ee48d65aa22401fd1dc.tar.gz
linux-3.10-ca45aaae1ef98890ac4e3ee48d65aa22401fd1dc.tar.bz2
linux-3.10-ca45aaae1ef98890ac4e3ee48d65aa22401fd1dc.zip
KVM: Unset kvm_arch_ops if arch module loading failed
Otherwise, the core module thinks the arch module is loaded, and won't let you reload it after you've fixed the bug. Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'drivers/kvm')
-rw-r--r--drivers/kvm/kvm_main.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index a163bca3897..dc7a8c78cbf 100644
--- a/drivers/kvm/kvm_main.c
+++ b/drivers/kvm/kvm_main.c
@@ -2464,7 +2464,7 @@ int kvm_init_arch(struct kvm_arch_ops *ops, struct module *module)
r = kvm_arch_ops->hardware_setup();
if (r < 0)
- return r;
+ goto out;
on_each_cpu(kvm_arch_ops->hardware_enable, NULL, 0, 1);
r = register_cpu_notifier(&kvm_cpu_notifier);
@@ -2500,6 +2500,8 @@ out_free_2:
out_free_1:
on_each_cpu(kvm_arch_ops->hardware_disable, NULL, 0, 1);
kvm_arch_ops->hardware_unsetup();
+out:
+ kvm_arch_ops = NULL;
return r;
}