diff options
| author | Avi Kivity <avi@qumranet.com> | 2007-03-01 12:21:03 -0500 |
|---|---|---|
| committer | Avi Kivity <avi@qumranet.com> | 2007-03-18 04:49:06 -0400 |
| commit | ca45aaae1ef98890ac4e3ee48d65aa22401fd1dc (patch) | |
| tree | 932e158722cf96b9090e36e21449f10f6f7c2525 | |
| parent | b720a3be1abd0cb5b9b530c0a1b4044fec4de60e (diff) | |
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>
| -rw-r--r-- | drivers/kvm/kvm_main.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c index a163bca38973..dc7a8c78cbf9 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) | |||
| 2464 | 2464 | ||
| 2465 | r = kvm_arch_ops->hardware_setup(); | 2465 | r = kvm_arch_ops->hardware_setup(); |
| 2466 | if (r < 0) | 2466 | if (r < 0) |
| 2467 | return r; | 2467 | goto out; |
| 2468 | 2468 | ||
| 2469 | on_each_cpu(kvm_arch_ops->hardware_enable, NULL, 0, 1); | 2469 | on_each_cpu(kvm_arch_ops->hardware_enable, NULL, 0, 1); |
| 2470 | r = register_cpu_notifier(&kvm_cpu_notifier); | 2470 | r = register_cpu_notifier(&kvm_cpu_notifier); |
| @@ -2500,6 +2500,8 @@ out_free_2: | |||
| 2500 | out_free_1: | 2500 | out_free_1: |
| 2501 | on_each_cpu(kvm_arch_ops->hardware_disable, NULL, 0, 1); | 2501 | on_each_cpu(kvm_arch_ops->hardware_disable, NULL, 0, 1); |
| 2502 | kvm_arch_ops->hardware_unsetup(); | 2502 | kvm_arch_ops->hardware_unsetup(); |
| 2503 | out: | ||
| 2504 | kvm_arch_ops = NULL; | ||
| 2503 | return r; | 2505 | return r; |
| 2504 | } | 2506 | } |
| 2505 | 2507 | ||
