diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2024-07-01 14:26:05 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2024-07-02 08:23:18 +0000 |
| commit | 9e5bd0be6b4daaf4593959c6c1a3708cfc1d0969 (patch) | |
| tree | 124f1de3d139a28490fc933676718ad8c0ef1f8d /pkg | |
| parent | b01b098ace00ac799e10c38d3d3f1db50437eb57 (diff) | |
pkg/mgrconfig: allow to disable remote coverage and coverage edges
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/mgrconfig/config.go | 6 | ||||
| -rw-r--r-- | pkg/mgrconfig/load.go | 4 | ||||
| -rw-r--r-- | pkg/rpcserver/rpcserver.go | 8 |
3 files changed, 16 insertions, 2 deletions
diff --git a/pkg/mgrconfig/config.go b/pkg/mgrconfig/config.go index 461d25afb..5b383249a 100644 --- a/pkg/mgrconfig/config.go +++ b/pkg/mgrconfig/config.go @@ -217,6 +217,12 @@ type Experimental struct { // Don't let the VM state accumulate too much by restarting // syz-executor before most prog executions. ResetAccState bool `json:"reset_acc_state"` + + // Use KCOV remote coverage feature (default: true). + RemoteCover bool `json:"remote_cover"` + + // Hash adjacent PCs to form fuzzing feedback signal, otherwise use PCs as signal (default: true). + CoverEdges bool `json:"cover_edges"` } type Subsystem struct { diff --git a/pkg/mgrconfig/load.go b/pkg/mgrconfig/load.go index ba446ffa3..05ba38a98 100644 --- a/pkg/mgrconfig/load.go +++ b/pkg/mgrconfig/load.go @@ -90,6 +90,10 @@ func defaultValues() *Config { MaxCrashLogs: 100, Procs: 6, PreserveCorpus: true, + Experimental: Experimental{ + RemoteCover: true, + CoverEdges: true, + }, } } diff --git a/pkg/rpcserver/rpcserver.go b/pkg/rpcserver/rpcserver.go index cdeb6f40b..58ef2d363 100644 --- a/pkg/rpcserver/rpcserver.go +++ b/pkg/rpcserver/rpcserver.go @@ -85,10 +85,14 @@ func New(cfg *mgrconfig.Config, mgr Manager, debug bool) (*Server, error) { if err != nil { return nil, err } + features := flatrpc.AllFeatures + if !cfg.Experimental.RemoteCover { + features &= ^flatrpc.FeatureExtraCoverage + } return newImpl(&Config{ Config: vminfo.Config{ Target: cfg.Target, - Features: flatrpc.AllFeatures, + Features: features, Syscalls: cfg.Syscalls, Debug: debug, Cover: cfg.Cover, @@ -99,7 +103,7 @@ func New(cfg *mgrconfig.Config, mgr Manager, debug bool) (*Server, error) { RPC: cfg.RPC, VMLess: cfg.VMLess, // gVisor coverage is not a trace, so producing edges won't work. - UseCoverEdges: cfg.Type != targets.GVisor, + UseCoverEdges: cfg.Experimental.CoverEdges && cfg.Type != targets.GVisor, // gVisor/Starnix are not Linux, so filtering against Linux ranges won't work. FilterSignal: cfg.Type != targets.GVisor && cfg.Type != targets.Starnix, PrintMachineCheck: true, |
