diff options
| author | Alexander Potapenko <glider@google.com> | 2024-12-10 13:38:43 +0100 |
|---|---|---|
| committer | Alexander Potapenko <glider@google.com> | 2024-12-11 10:23:54 +0000 |
| commit | 09017703fac0755f8fc6362abe16a3206bccf333 (patch) | |
| tree | 84279d9208c1542dcd605a5d59a24dbadc4a84ea /pkg | |
| parent | cfc402b4e65a6aab3a2555765bda8dc12c99a348 (diff) | |
pkg/vminfo: sys/linux: executor: define syz_kvm_assert_syzos_uexit()
The new pseudo-syscall will serve as a test assertion, checking the uexit
return value. This is going to help us validate SyzOS code.
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/runtest/run.go | 17 | ||||
| -rw-r--r-- | pkg/vminfo/linux_syscalls.go | 1 |
2 files changed, 14 insertions, 4 deletions
diff --git a/pkg/runtest/run.go b/pkg/runtest/run.go index 213ce3f58..ca3ed3b4b 100644 --- a/pkg/runtest/run.go +++ b/pkg/runtest/run.go @@ -563,10 +563,19 @@ func checkCallResult(req *runRequest, isC bool, run, call int, info *flatrpc.Pro if len(inf.Signal) < 2 && !calls[callName] && len(info.Extra.Signal) == 0 { return fmt.Errorf("run %v: call %v: no signal", run, call) } - // syz_btf_id_by_name is a pseudo-syscall that might not provide - // any coverage when invoked. - if len(inf.Cover) == 0 && callName != "syz_btf_id_by_name" { - return fmt.Errorf("run %v: call %v: no cover", run, call) + // Pseudo-syscalls that might not provide any coverage when invoked. + noCovSyscalls := []string{"syz_btf_id_by_name", "syz_kvm_assert_syzos_uexit"} + if len(inf.Cover) == 0 { + found := true + for _, s := range noCovSyscalls { + if callName == s { + found = true + break + } + } + if !found { + return fmt.Errorf("run %v: call %v: no cover", run, call) + } } calls[callName] = true } else { diff --git a/pkg/vminfo/linux_syscalls.go b/pkg/vminfo/linux_syscalls.go index 95e3e54eb..935c9feea 100644 --- a/pkg/vminfo/linux_syscalls.go +++ b/pkg/vminfo/linux_syscalls.go @@ -83,6 +83,7 @@ var linuxSyscallChecks = map[string]func(*checkContext, *prog.Syscall) string{ "syz_kvm_vgic_v3_setup": linuxSyzSupportedOnArm64, "syz_kvm_setup_syzos_vm": linuxSyzSupportedOnArm64, "syz_kvm_add_vcpu": linuxSyzSupportedOnArm64, + "syz_kvm_assert_syzos_uexit": linuxSyzSupportedOnArm64, "syz_emit_vhci": linuxVhciInjectionSupported, "syz_init_net_socket": linuxSyzInitNetSocketSupported, "syz_genetlink_get_family_id": linuxSyzGenetlinkGetFamilyIDSupported, |
