From df4265465adfccfb96d35b0078d73bce8e16e4d7 Mon Sep 17 00:00:00 2001 From: maramihali Date: Tue, 13 Jul 2021 15:42:51 +0300 Subject: syz-verifier: use only system calls supported by all kernels and with no transitive dependencies when building the `prog.ChoiceTable` (#2653) * pkg/rpctype: add types for CheckUnsupported RPC * syz-runner: added functionality for detecting unsupported system calls * syz-verifier: added UpdateUnsupported RPC method This will receive the unsupported system calls from each kernel, compute the intersections of system calls that are enabled by all kernels and build the choice table only using those. * syz-verifier, syz-runner: report only when specific calls are enabled --- pkg/rpctype/rpctype.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'pkg') diff --git a/pkg/rpctype/rpctype.go b/pkg/rpctype/rpctype.go index 2f09e9788..8a7fe7aa6 100644 --- a/pkg/rpctype/rpctype.go +++ b/pkg/rpctype/rpctype.go @@ -82,6 +82,23 @@ type RunnerConnectArgs struct { Pool, VM int } +type RunnerConnectRes struct { + // CheckUnsupportedCalls is set to true if the Runner needs to query the kernel + // for unsupported system calls and report them back to the server. + CheckUnsupportedCalls bool +} + +// UpdateUnsupportedArgs contains the data passed from client to server in an +// UpdateSupported call, namely the system calls not supported by the client's +// kernel. +type UpdateUnsupportedArgs struct { + // Pool is used to identify the checked kernel. + Pool int + // UnsupportedCalls contains the ID's of system calls not supported by the + // client and the reason for this. + UnsupportedCalls []SyscallReason +} + // NextExchangeArgs contains the data passed from client to server namely // identification information of the VM and program execution results. type NextExchangeArgs struct { -- cgit mrf-deployment