diff options
| -rw-r--r-- | pkg/fuzzer/fuzzer.go | 17 | ||||
| -rw-r--r-- | pkg/fuzzer/fuzzer_test.go | 5 | ||||
| -rw-r--r-- | pkg/fuzzer/job.go | 15 | ||||
| -rw-r--r-- | pkg/rpctype/rpctype.go | 8 | ||||
| -rw-r--r-- | syz-manager/rpc.go | 4 |
5 files changed, 23 insertions, 26 deletions
diff --git a/pkg/fuzzer/fuzzer.go b/pkg/fuzzer/fuzzer.go index a5b338b13..42fc62ea5 100644 --- a/pkg/fuzzer/fuzzer.go +++ b/pkg/fuzzer/fuzzer.go @@ -14,7 +14,6 @@ import ( "github.com/google/syzkaller/pkg/corpus" "github.com/google/syzkaller/pkg/ipc" - "github.com/google/syzkaller/pkg/rpctype" "github.com/google/syzkaller/pkg/signal" "github.com/google/syzkaller/pkg/stats" "github.com/google/syzkaller/prog" @@ -87,7 +86,7 @@ type Request struct { Prog *prog.Prog NeedCover bool NeedRawCover bool - NeedSignal rpctype.SignalType + NeedSignal SignalType NeedHints bool // If specified, the resulting signal for call SignalFilterCall // will include subset of it even if it's not new. @@ -99,6 +98,14 @@ type Request struct { resultC chan *Result } +type SignalType int + +const ( + NoSignal SignalType = 0 // we don't need any signal + NewSignal SignalType = 1 // we need the newly seen signal + AllSignal SignalType = 2 // we need all signal +) + type Result struct { Info *ipc.ProgInfo Stop bool @@ -108,7 +115,7 @@ func (fuzzer *Fuzzer) Done(req *Request, res *Result) { // Triage individual calls. // We do it before unblocking the waiting threads because // it may result it concurrent modification of req.Prog. - if req.NeedSignal != rpctype.NoSignal && res.Info != nil { + if req.NeedSignal != NoSignal && res.Info != nil { for call, info := range res.Info.Calls { fuzzer.triageProgCall(req.Prog, &info, call, req.flags) } @@ -249,10 +256,10 @@ func (fuzzer *Fuzzer) nextRand() int64 { } func (fuzzer *Fuzzer) pushExec(req *Request, prio priority) { - if req.NeedHints && (req.NeedCover || req.NeedSignal != rpctype.NoSignal) { + if req.NeedHints && (req.NeedCover || req.NeedSignal != NoSignal) { panic("Request.NeedHints is mutually exclusive with other fields") } - if req.SignalFilter != nil && req.NeedSignal != rpctype.NewSignal { + if req.SignalFilter != nil && req.NeedSignal != NewSignal { panic("SignalFilter must be used with NewSignal") } fuzzer.nextExec.push(&priorityQueueItem[*Request]{ diff --git a/pkg/fuzzer/fuzzer_test.go b/pkg/fuzzer/fuzzer_test.go index 6c6bb46fd..5e275851a 100644 --- a/pkg/fuzzer/fuzzer_test.go +++ b/pkg/fuzzer/fuzzer_test.go @@ -22,7 +22,6 @@ import ( "github.com/google/syzkaller/pkg/csource" "github.com/google/syzkaller/pkg/ipc" "github.com/google/syzkaller/pkg/ipc/ipcconfig" - "github.com/google/syzkaller/pkg/rpctype" "github.com/google/syzkaller/pkg/signal" "github.com/google/syzkaller/pkg/testutil" "github.com/google/syzkaller/prog" @@ -193,7 +192,7 @@ func emulateExec(req *Request) (*Result, string, error) { if req.NeedCover { callInfo.Cover = []uint32{cover} } - if req.NeedSignal != rpctype.NoSignal { + if req.NeedSignal != NoSignal { callInfo.Signal = []uint32{cover} } info.Calls = append(info.Calls, callInfo) @@ -302,7 +301,7 @@ var crashRe = regexp.MustCompile(`{{CRASH: (.*?)}}`) func (proc *executorProc) execute(req *Request) (*Result, string, error) { execOpts := proc.execOpts // TODO: it's duplicated from fuzzer.go. - if req.NeedSignal != rpctype.NoSignal { + if req.NeedSignal != NoSignal { execOpts.ExecFlags |= ipc.FlagCollectSignal } if req.NeedCover { diff --git a/pkg/fuzzer/job.go b/pkg/fuzzer/job.go index b5bb2aab1..17929fcda 100644 --- a/pkg/fuzzer/job.go +++ b/pkg/fuzzer/job.go @@ -10,7 +10,6 @@ import ( "github.com/google/syzkaller/pkg/corpus" "github.com/google/syzkaller/pkg/cover" "github.com/google/syzkaller/pkg/ipc" - "github.com/google/syzkaller/pkg/rpctype" "github.com/google/syzkaller/pkg/signal" "github.com/google/syzkaller/pkg/stats" "github.com/google/syzkaller/prog" @@ -71,7 +70,7 @@ func genProgRequest(fuzzer *Fuzzer, rnd *rand.Rand) *Request { fuzzer.ChoiceTable()) return &Request{ Prog: p, - NeedSignal: rpctype.NewSignal, + NeedSignal: NewSignal, stat: fuzzer.statExecGenerate, } } @@ -90,7 +89,7 @@ func mutateProgRequest(fuzzer *Fuzzer, rnd *rand.Rand) *Request { ) return &Request{ Prog: newP, - NeedSignal: rpctype.NewSignal, + NeedSignal: NewSignal, stat: fuzzer.statExecFuzz, } } @@ -105,7 +104,7 @@ func candidateRequest(fuzzer *Fuzzer, input Candidate) *Request { } return &Request{ Prog: input.Prog, - NeedSignal: rpctype.NewSignal, + NeedSignal: NewSignal, stat: fuzzer.statExecCandidate, flags: flags, } @@ -197,7 +196,7 @@ func (job *triageJob) deflake(exec func(job, *Request) *Result, stat *stats.Val, } result := exec(job, &Request{ Prog: job.p, - NeedSignal: rpctype.AllSignal, + NeedSignal: AllSignal, NeedCover: true, NeedRawCover: rawCover, stat: stat, @@ -238,7 +237,7 @@ func (job *triageJob) minimize(fuzzer *Fuzzer, newSignal signal.Signal) (stop bo for i := 0; i < minimizeAttempts; i++ { result := fuzzer.exec(job, &Request{ Prog: p1, - NeedSignal: rpctype.NewSignal, + NeedSignal: NewSignal, SignalFilter: newSignal, SignalFilterCall: call1, stat: fuzzer.statExecMinimize, @@ -313,7 +312,7 @@ func (job *smashJob) run(fuzzer *Fuzzer) { fuzzer.Config.Corpus.Programs()) result := fuzzer.exec(job, &Request{ Prog: p, - NeedSignal: rpctype.NewSignal, + NeedSignal: NewSignal, stat: fuzzer.statExecSmash, }) if result.Stop { @@ -404,7 +403,7 @@ func (job *hintsJob) run(fuzzer *Fuzzer) { func(p *prog.Prog) bool { result := fuzzer.exec(job, &Request{ Prog: p, - NeedSignal: rpctype.NewSignal, + NeedSignal: NewSignal, stat: fuzzer.statExecHint, }) return !result.Stop diff --git a/pkg/rpctype/rpctype.go b/pkg/rpctype/rpctype.go index 469a614c5..b0d932714 100644 --- a/pkg/rpctype/rpctype.go +++ b/pkg/rpctype/rpctype.go @@ -14,14 +14,6 @@ import ( "github.com/google/syzkaller/pkg/signal" ) -type SignalType int - -const ( - NoSignal SignalType = 0 // we don't need any signal - NewSignal SignalType = 1 // we need the newly seen signal - AllSignal SignalType = 2 // we need all signal -) - // ExecutionRequest describes the task of executing a particular program. // Corresponds to Fuzzer.Request. type ExecutionRequest struct { diff --git a/syz-manager/rpc.go b/syz-manager/rpc.go index 0a4fbd238..8656dcc2b 100644 --- a/syz-manager/rpc.go +++ b/syz-manager/rpc.go @@ -478,7 +478,7 @@ func (serv *RPCServer) newRequest(runner *Runner, req *fuzzer.Request) (rpctype. ID: id, ProgData: progData, ExecOpts: serv.createExecOpts(req), - NewSignal: req.NeedSignal == rpctype.NewSignal, + NewSignal: req.NeedSignal == fuzzer.NewSignal, SignalFilter: signalFilter, SignalFilterCall: req.SignalFilterCall, }, true @@ -506,7 +506,7 @@ func (serv *RPCServer) createExecOpts(req *fuzzer.Request) ipc.ExecOpts { exec |= ipc.FlagEnableCoverageFilter } if serv.cfg.Cover { - if req.NeedSignal != rpctype.NoSignal { + if req.NeedSignal != fuzzer.NoSignal { exec |= ipc.FlagCollectSignal } if req.NeedCover { |
