aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2025-06-20 12:04:24 +0200
committerTaras Madan <tarasmadan@google.com>2025-06-20 13:09:54 +0000
commitd6cdfb8a765c64793bc63cf630e68fbdd0ee0974 (patch)
tree4ee8ffc152e02bf821671ce02cd28015aa4aa77c
parente3003213f6deee7f817122847d77b769bc8b46ad (diff)
pkg/report: minor refactoring
setExecutorInfo is closer to Report. Distinguish reportType and defaultReportType Make setter a Report member function.
-rw-r--r--pkg/report/linux.go10
-rw-r--r--pkg/report/report.go34
2 files changed, 22 insertions, 22 deletions
diff --git a/pkg/report/linux.go b/pkg/report/linux.go
index 782cb9032..3d03671bd 100644
--- a/pkg/report/linux.go
+++ b/pkg/report/linux.go
@@ -188,10 +188,10 @@ func (ctx *linux) Parse(output []byte) *Report {
}
rep.reportPrefixLen = len(rep.Report)
rep.Report = append(rep.Report, report...)
- setReportType(rep, oops, format)
- ctx.setExecutorInfo(rep)
+ rep.setType(format.reportType, oops.defaultReportType)
+ setExecutorInfo(rep)
if !rep.Corrupted {
- rep.Corrupted, rep.CorruptedReason = ctx.isCorrupted(title, report, format)
+ rep.Corrupted, rep.CorruptedReason = isCorrupted(title, report, format)
}
if rep.CorruptedReason == corruptedNoFrames && context != contextConsole && !questionable {
// We used to look at questionable frame with the following incentive:
@@ -898,7 +898,7 @@ func getMaintainersImpl(kernelSrc, file string, blame bool) (vcs.Recipients, err
return vcs.ParseMaintainersLinux(output), nil
}
-func (ctx *linux) isCorrupted(title string, report []byte, format oopsFormat) (bool, string) {
+func isCorrupted(title string, report []byte, format oopsFormat) (bool, string) {
// Check for common title corruptions.
for _, re := range linuxCorruptedTitles {
if re.MatchString(title) {
@@ -954,7 +954,7 @@ func (ctx *linux) isCorrupted(title string, report []byte, format oopsFormat) (b
var syzLinuxCommRe = regexp.MustCompile(` Comm: syz\.(\d+)\.(\d+) `)
-func (ctx *linux) setExecutorInfo(rep *Report) {
+func setExecutorInfo(rep *Report) {
match := syzLinuxCommRe.FindSubmatch(rep.Report)
if match == nil {
return
diff --git a/pkg/report/report.go b/pkg/report/report.go
index ea61f0a73..a069fe058 100644
--- a/pkg/report/report.go
+++ b/pkg/report/report.go
@@ -83,12 +83,22 @@ type ExecutorInfo struct {
ExecID int // The program the syz-executor was executing.
}
-func (r Report) String() string {
- return fmt.Sprintf("crash: %v\n%s", r.Title, r.Report)
+// unspecifiedType can be used to cancel oops.defaultReportType from oopsFormat.reportType.
+const unspecifiedType = crash.Type("UNSPECIFIED")
+
+func (rep *Report) setType(typ, defaultType crash.Type) {
+ if typ == unspecifiedType {
+ rep.Type = crash.UnknownType
+ } else if typ != crash.UnknownType {
+ rep.Type = typ
+ } else {
+ rep.Type = defaultType
+ }
}
-// unspecifiedType can be used to cancel oops.reportType from oopsFormat.reportType.
-const unspecifiedType = crash.Type("UNSPECIFIED")
+func (rep *Report) String() string {
+ return fmt.Sprintf("crash: %v\n%s", rep.Title, rep.Report)
+}
// NewReporter creates reporter for the specified OS/Type.
func NewReporter(cfg *mgrconfig.Config) (*Reporter, error) {
@@ -240,16 +250,6 @@ func (reporter *Reporter) Symbolize(rep *Report) error {
return nil
}
-func setReportType(rep *Report, oops *oops, format oopsFormat) {
- if format.reportType == unspecifiedType {
- rep.Type = crash.UnknownType
- } else if format.reportType != crash.UnknownType {
- rep.Type = format.reportType
- } else if oops.reportType != crash.UnknownType {
- rep.Type = oops.reportType
- }
-}
-
func (reporter *Reporter) isInteresting(rep *Report) bool {
if len(reporter.interests) == 0 {
return true
@@ -406,8 +406,8 @@ type oops struct {
header []byte
formats []oopsFormat
suppressions []*regexp.Regexp
- // This reportType will be used if oopsFormat's reportType is empty.
- reportType crash.Type
+ // defaultReportType will be used if oopsFormat's reportType is empty.
+ defaultReportType crash.Type
}
type oopsFormat struct {
@@ -817,7 +817,7 @@ func simpleLineParser(output []byte, oopses []*oops, params *stackParams, ignore
rep.Report = output[rep.StartPos:]
rep.Corrupted = corrupted != ""
rep.CorruptedReason = corrupted
- setReportType(rep, oops, format)
+ rep.setType(format.reportType, oops.defaultReportType)
return rep
}