kvm_release_page_dirty(page);
 }
 
-static bool nested_svm_exit_handled_msr(struct vcpu_svm *svm)
+static int nested_svm_exit_handled_msr(struct vcpu_svm *svm)
 {
        u32 param = svm->vmcb->control.exit_info_1 & 1;
        u32 msr = svm->vcpu.arch.regs[VCPU_REGS_RCX];
-       bool ret = false;
        u32 t0, t1;
+       int ret;
        u8 val;
 
        if (!(svm->nested.intercept & (1ULL << INTERCEPT_MSR_PROT)))
-               return false;
+               return NESTED_EXIT_HOST;
 
        switch (msr) {
        case 0 ... 0x1fff:
                t0 %= 8;
                break;
        default:
-               ret = true;
+               ret = NESTED_EXIT_DONE;
                goto out;
        }
 
        if (!kvm_read_guest(svm->vcpu.kvm, svm->nested.vmcb_msrpm + t1, &val, 1))
-               ret = val & ((1 << param) << t0);
+               ret = val & ((1 << param) << t0) ? NESTED_EXIT_DONE : NESTED_EXIT_HOST;
 
 out:
        return ret;