aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorAlexander Potapenko <glider@google.com>2025-09-17 12:16:39 +0200
committerAlexander Potapenko <glider@google.com>2025-09-19 08:38:14 +0000
commit2a4c6c0dbed891610b6d10f663c797e9e80d1981 (patch)
tree505aabccf61b05e5199a782da517b51852596665 /pkg
parentbc3f649c1cdcc44bee1e351e1326a9072393736a (diff)
executor: sys/linux/: pkg/runtest: pkg/vminfo: add syz_kvm_assert_syzos_kvm_exit
Implement a pseudo-syscall to check the value of kvm_run.exit_reason
Diffstat (limited to 'pkg')
-rw-r--r--pkg/runtest/run.go2
-rw-r--r--pkg/vminfo/linux_syscalls.go92
2 files changed, 48 insertions, 46 deletions
diff --git a/pkg/runtest/run.go b/pkg/runtest/run.go
index 99c5f4698..f242fa137 100644
--- a/pkg/runtest/run.go
+++ b/pkg/runtest/run.go
@@ -556,7 +556,7 @@ func checkCallResult(req *runRequest, isC bool, run, call int, info *flatrpc.Pro
if req.ExecOpts.EnvFlags&flatrpc.ExecEnvSignal != 0 {
callName := req.Prog.Calls[call].Meta.CallName
// Pseudo-syscalls that might not provide any coverage when invoked.
- noCovSyscalls := []string{"syz_btf_id_by_name", "syz_kvm_assert_syzos_uexit"}
+ noCovSyscalls := []string{"syz_btf_id_by_name", "syz_kvm_assert_syzos_uexit", "syz_kvm_assert_syzos_kvm_exit"}
isNoCov := slices.Contains(noCovSyscalls, callName)
// Signal is always deduplicated, so we may not get any signal
// on a second invocation of the same syscall.
diff --git a/pkg/vminfo/linux_syscalls.go b/pkg/vminfo/linux_syscalls.go
index c5d1cf405..abd749be3 100644
--- a/pkg/vminfo/linux_syscalls.go
+++ b/pkg/vminfo/linux_syscalls.go
@@ -62,49 +62,50 @@ func linuxSupportedLSM(ctx *checkContext, call *prog.Syscall) string {
}
var linuxSyscallChecks = map[string]func(*checkContext, *prog.Syscall) string{
- "openat": supportedOpenat,
- "mount": linuxSupportedMount,
- "socket": linuxSupportedSocket,
- "socketpair": linuxSupportedSocket,
- "pkey_alloc": linuxPkeysSupported,
- "syz_open_dev": linuxSyzOpenDevSupported,
- "syz_open_procfs": linuxSyzOpenProcfsSupported,
- "syz_open_pts": alwaysSupported,
- "syz_execute_func": alwaysSupported,
- "syz_emit_ethernet": linuxNetInjectionSupported,
- "syz_extract_tcp_res": linuxNetInjectionSupported,
- "syz_usb_connect": linuxCheckUSBEmulation,
- "syz_usb_connect_ath9k": linuxCheckUSBEmulation,
- "syz_usb_disconnect": linuxCheckUSBEmulation,
- "syz_usb_control_io": linuxCheckUSBEmulation,
- "syz_usb_ep_write": linuxCheckUSBEmulation,
- "syz_usb_ep_read": linuxCheckUSBEmulation,
- "syz_kvm_setup_cpu": linuxSyzKvmSupported,
- "syz_kvm_vgic_v3_setup": linuxSyzSupportedOnArm64,
- "syz_kvm_setup_syzos_vm": linuxSyzKvmSupported,
- "syz_kvm_add_vcpu": linuxSyzKvmSupported,
- "syz_kvm_assert_syzos_uexit": linuxSyzKvmSupported,
- "syz_kvm_assert_reg": linuxSyzSupportedOnArm64,
- "syz_emit_vhci": linuxVhciInjectionSupported,
- "syz_init_net_socket": linuxSyzInitNetSocketSupported,
- "syz_genetlink_get_family_id": linuxSyzGenetlinkGetFamilyIDSupported,
- "syz_mount_image": linuxSyzMountImageSupported,
- "syz_read_part_table": linuxSyzReadPartTableSupported,
- "syz_io_uring_setup": alwaysSupported,
- "syz_io_uring_submit": alwaysSupported,
- "syz_io_uring_complete": alwaysSupported,
- "syz_memcpy_off": alwaysSupported,
- "syz_btf_id_by_name": linuxBtfVmlinuxSupported,
- "syz_fuse_handle_req": alwaysSupported,
- "syz_80211_inject_frame": linuxWifiEmulationSupported,
- "syz_80211_join_ibss": linuxWifiEmulationSupported,
- "syz_usbip_server_init": linuxSyzUsbIPSupported,
- "syz_clone": alwaysSupported,
- "syz_clone3": alwaysSupported,
- "syz_pkey_set": linuxPkeysSupported,
- "syz_socket_connect_nvme_tcp": linuxSyzSocketConnectNvmeTCPSupported,
- "syz_pidfd_open": alwaysSupported,
- "syz_create_resource": alwaysSupported,
+ "openat": supportedOpenat,
+ "mount": linuxSupportedMount,
+ "socket": linuxSupportedSocket,
+ "socketpair": linuxSupportedSocket,
+ "pkey_alloc": linuxPkeysSupported,
+ "syz_open_dev": linuxSyzOpenDevSupported,
+ "syz_open_procfs": linuxSyzOpenProcfsSupported,
+ "syz_open_pts": alwaysSupported,
+ "syz_execute_func": alwaysSupported,
+ "syz_emit_ethernet": linuxNetInjectionSupported,
+ "syz_extract_tcp_res": linuxNetInjectionSupported,
+ "syz_usb_connect": linuxCheckUSBEmulation,
+ "syz_usb_connect_ath9k": linuxCheckUSBEmulation,
+ "syz_usb_disconnect": linuxCheckUSBEmulation,
+ "syz_usb_control_io": linuxCheckUSBEmulation,
+ "syz_usb_ep_write": linuxCheckUSBEmulation,
+ "syz_usb_ep_read": linuxCheckUSBEmulation,
+ "syz_kvm_setup_cpu": linuxSyzKvmSupported,
+ "syz_kvm_vgic_v3_setup": linuxSyzSupportedOnArm64,
+ "syz_kvm_setup_syzos_vm": linuxSyzKvmSupported,
+ "syz_kvm_add_vcpu": linuxSyzKvmSupported,
+ "syz_kvm_assert_syzos_uexit": linuxSyzKvmSupported,
+ "syz_kvm_assert_syzos_kvm_exit": linuxSyzKvmSupported,
+ "syz_kvm_assert_reg": linuxSyzSupportedOnArm64,
+ "syz_emit_vhci": linuxVhciInjectionSupported,
+ "syz_init_net_socket": linuxSyzInitNetSocketSupported,
+ "syz_genetlink_get_family_id": linuxSyzGenetlinkGetFamilyIDSupported,
+ "syz_mount_image": linuxSyzMountImageSupported,
+ "syz_read_part_table": linuxSyzReadPartTableSupported,
+ "syz_io_uring_setup": alwaysSupported,
+ "syz_io_uring_submit": alwaysSupported,
+ "syz_io_uring_complete": alwaysSupported,
+ "syz_memcpy_off": alwaysSupported,
+ "syz_btf_id_by_name": linuxBtfVmlinuxSupported,
+ "syz_fuse_handle_req": alwaysSupported,
+ "syz_80211_inject_frame": linuxWifiEmulationSupported,
+ "syz_80211_join_ibss": linuxWifiEmulationSupported,
+ "syz_usbip_server_init": linuxSyzUsbIPSupported,
+ "syz_clone": alwaysSupported,
+ "syz_clone3": alwaysSupported,
+ "syz_pkey_set": linuxPkeysSupported,
+ "syz_socket_connect_nvme_tcp": linuxSyzSocketConnectNvmeTCPSupported,
+ "syz_pidfd_open": alwaysSupported,
+ "syz_create_resource": alwaysSupported,
}
func linuxSyzOpenDevSupported(ctx *checkContext, call *prog.Syscall) string {
@@ -180,12 +181,13 @@ func linuxSyzKvmSupported(ctx *checkContext, call *prog.Syscall) string {
if ctx.target.Arch == targets.AMD64 || ctx.target.Arch == targets.I386 {
return ""
}
- case "syz_kvm_setup_syzos_vm$x86", "syz_kvm_add_vcpu$x86", "syz_kvm_assert_syzos_uexit$x86":
+ case "syz_kvm_setup_syzos_vm$x86", "syz_kvm_add_vcpu$x86", "syz_kvm_assert_syzos_uexit$x86",
+ "syz_kvm_assert_syzos_kvm_exit$x86":
if ctx.target.Arch == targets.AMD64 {
return ""
}
case "syz_kvm_setup_cpu$arm64", "syz_kvm_setup_syzos_vm$arm64", "syz_kvm_add_vcpu$arm64",
- "syz_kvm_assert_syzos_uexit$arm64":
+ "syz_kvm_assert_syzos_uexit$arm64", "syz_kvm_assert_syzos_kvm_exit$arm64":
if ctx.target.Arch == targets.ARM64 {
return ""
}