aboutsummaryrefslogtreecommitdiffstats
path: root/executor/common_kvm_arm64.h
diff options
context:
space:
mode:
Diffstat (limited to 'executor/common_kvm_arm64.h')
-rw-r--r--executor/common_kvm_arm64.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/executor/common_kvm_arm64.h b/executor/common_kvm_arm64.h
index 02e84aad8..6feec78ab 100644
--- a/executor/common_kvm_arm64.h
+++ b/executor/common_kvm_arm64.h
@@ -380,3 +380,22 @@ static long syz_kvm_assert_syzos_uexit(volatile long a0, volatile long a1)
return 0;
}
#endif
+
+#if SYZ_EXECUTOR || __NR_syz_kvm_assert_reg
+static long syz_kvm_assert_reg(volatile long a0, volatile long a1, volatile long a2)
+{
+ int vcpu_fd = (int)a0;
+ uint64 id = (uint64)a1;
+ uint64 expect = a2, val = 0;
+
+ struct kvm_one_reg reg = {.id = id, .addr = (uint64)&val};
+ int ret = ioctl(vcpu_fd, KVM_GET_ONE_REG, &reg);
+ if (ret)
+ return ret;
+ if (val != expect) {
+ errno = EDOM;
+ return -1;
+ }
+ return 0;
+}
+#endif