From b39df73c1629cb4b2846cbb14a6a37e33d0060a1 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Tue, 31 Jan 2023 16:22:37 +0100 Subject: pkg/subsystem: remove unneeded paths from matching rules We don't really care about Documentation/ and similar folders. Exclude such path matching rules after parsing MAINTAINERS. --- pkg/subsystem/linux/maintainers.go | 16 ++++++++++++++++ pkg/subsystem/linux/subsystems.go | 8 ++++++++ 2 files changed, 24 insertions(+) (limited to 'pkg/subsystem/linux') diff --git a/pkg/subsystem/linux/maintainers.go b/pkg/subsystem/linux/maintainers.go index 6a188b261..7c60a840a 100644 --- a/pkg/subsystem/linux/maintainers.go +++ b/pkg/subsystem/linux/maintainers.go @@ -173,6 +173,22 @@ func (r maintainersRecord) ToPathRule() entity.PathRule { } } +func removeMatchingPatterns(records []*maintainersRecord, rule *regexp.Regexp) { + filter := func(list []string) []string { + ret := []string{} + for _, item := range list { + if !rule.MatchString(item) { + ret = append(ret, item) + } + } + return ret + } + for _, record := range records { + record.includePatterns = filter(record.includePatterns) + record.excludePatterns = filter(record.excludePatterns) + } +} + var ( escapedSeparator = regexp.QuoteMeta(fmt.Sprintf("%c", filepath.Separator)) wildcardReplace = map[byte]string{ diff --git a/pkg/subsystem/linux/subsystems.go b/pkg/subsystem/linux/subsystems.go index abda295b4..43fea3b9e 100644 --- a/pkg/subsystem/linux/subsystems.go +++ b/pkg/subsystem/linux/subsystems.go @@ -7,6 +7,7 @@ import ( "fmt" "io/fs" "os" + "regexp" "sort" "github.com/google/syzkaller/pkg/subsystem/entity" @@ -23,6 +24,7 @@ func listFromRepoInner(root fs.FS, rules *customRules) ([]*entity.Subsystem, err if err != nil { return nil, err } + removeMatchingPatterns(records, dropPatterns) ctx := &linuxCtx{ root: root, rawRecords: records, @@ -59,6 +61,12 @@ type subsystemCandidate struct { commonEmail string } +var ( + // Some of the patterns are not really needed for bug subsystem inteference and + // only complicate the manual review of the rules. + dropPatterns = regexp.MustCompile(`^(Documentation|scripts|samples|tools)|Makefile`) +) + func (ctx *linuxCtx) groupByList() []*subsystemCandidate { perList := make(map[string][]*maintainersRecord) for _, record := range ctx.rawRecords { -- cgit mrf-deployment