aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/vminfo/features.go
Commit message (Collapse)AuthorAgeFilesLines
* pkg/flatrpc, pkg/vminfo, executor: introduce readonly coverageAlexander Potapenko2025-07-311-0/+2
| | | | | | | | | | | | | Add a new vminfo feature, FeatureKcovResetIoctl, that is true if the kernel supports ioctl(KCOV_RESET_TRACE) making it possible to reset the coverage buffer on the kernel side. This, in turn, allows us to map the coverage buffer read-only, which will prevent all sorts of userspace-generated corruptions at a cost of an extra syscall per program execution. The corresponding exec env flag, ExecEnv::ReadOnlyCoverage, turns on read-only coverage in the executor. It is enabled by default if FeatureKcovResetIoctl is on.
* all: remove loop variables scopingTaras Madan2025-02-171-1/+0
|
* pkg/vminfo: add more details to an execution errorAleksandr Nogikh2024-07-091-1/+1
| | | | Let's make it more clear why it might have failed.
* Revert "pkg/vminfo: make it possible to force coverage support"Dmitry Vyukov2024-06-281-1/+1
| | | | This reverts commit 62e12a69a0ef8fec1cc0648b1314428621f9a697.
* pkg/vminfo: make it possible to force coverage supportAleksandr Nogikh2024-06-281-1/+1
| | | | | | | | | We need this in pkg/runtest since not all TestOS targets natively support the coverage instrumentation. We used to achieve this by starting the RPC server with Coverage=false and then updating it to Coverage=true to suppress fallback the fallback signal, but it's better to avoid such runtime config changes.
* executor: add runner modeDmitry Vyukov2024-06-241-5/+15
| | | | | | | Move all syz-fuzzer logic into syz-executor and remove syz-fuzzer. Also restore syz-runtest functionality in the manager. Update #4917 (sets most signal handlers to SIG_IGN)
* pkg/ipc: remove ExecOptsDmitry Vyukov2024-05-211-2/+1
| | | | Switch to flatrpc.ExecOpts.
* pkg/ipc: remove ProgInfoDmitry Vyukov2024-05-211-2/+2
| | | | | | Switch to flatrpc.ProgInfo. Note: this disables syz-runtest and syz-verifier.
* pkg/ipc: use flatrpc flagsDmitry Vyukov2024-05-171-17/+17
| | | | | | Flatrpc flags are passed in RPC execution requests, so to avoid conversions and duplicate set of flags use flatrpc flags in pkg/ipc directly.
* pkg/host: return slices of pointersDmitry Vyukov2024-05-171-1/+1
| | | | | Flatbuffers compiler generates slices of pointers for these types, so return slices of pointers to avoid converting the whole slice.
* pkg/fuzzer: manipulate ipc.ExecOptsAleksandr Nogikh2024-05-161-1/+1
| | | | There's no need in duplicating the signal, coverage, hints flags.
* pkg/runtest: use queue.Request and queue.ResultAleksandr Nogikh2024-05-161-1/+4
| | | | There's no need to duplicate the execution mechanisms.
* pkg/vminfo: run programs interactivelyAleksandr Nogikh2024-05-161-6/+16
| | | | | | Use the same interfaces as the fuzzer. Now syz-manager no longer needs to treat machine check executions differently.
* pkg/vminfo: move feature checking to hostDmitry Vyukov2024-05-151-0/+192
Feature checking procedure is split into 2 phases: 1. syz-fuzzer invokes "syz-executor setup feature" for each feature one-by-one, and checks if executor does not fail. Executor can also return a special "this feature does not need custom setup", this allows to not call setup of these features in each new VM. 2. pkg/vminfo runs a simple program with ipc.ExecOpts specific for a concrete feature, e.g. for wifi injection it will try to run a program with wifi feature enabled, if setup of the feature fails, executor should also exit with an error. For coverage features we also additionally check that we actually got coverage. Then pkg/vminfo combines results of these 2 checks into final result. syz-execprog now also uses vminfo package and mimics the same checking procedure. Update #1541