aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/subsystem/linux
Commit message (Collapse)AuthorAgeFilesLines
* pkg/subsystem: restructure the packageAleksandr Nogikh2023-02-1012-81/+286
| | | | | | Remove the entity and match subpackages. Regenerate the linux.go file.
* pkg/subsystem: detect loops on the goAleksandr Nogikh2023-02-102-60/+1
| | | | This lets us reduce the amount of code in parents.go.
* pkg/subsystem: extract names after all preprocessingAleksandr Nogikh2023-02-103-11/+15
| | | | | | | | In the previous steps we eliminate some of the extracted subsystems. It helps to have fewer contention while assigning the names. As a result, we need to only rely on emails during parents trasnformations.
* pkg/subsystem: skip small subsystemsAleksandr Nogikh2023-02-103-18/+28
| | | | And regenerate the Linux rules file.
* pkg/subsystem/linux: add more custom naming rulesAleksandr Nogikh2023-02-101-0/+2
| | | | | | linux-security-module is too long, we could use just lsm. Also, overlayfs had a different name, therefore we cannot infer it from the mailing list as is.
* pkg/subsystem/linux: refactor groupByList and getSubsystemsAleksandr Nogikh2023-02-101-40/+15
| | | | Simplify the code by removing the unnecessary itermediate structures.
* pkg/subsystem/linux: add a list of non-subsystem emailsAleksandr Nogikh2023-02-102-0/+15
| | | | | | Despite the automatic logic we already have, there are still a few emails that slip the check. For now let's keep them in a separate array, maybe later we'll figure out a pattern.
* pkg/subsystem: push the base subsystem listAleksandr Nogikh2023-02-101-8/+13
| | | | | This list was generated using an older version of the code. It'll serve as a baseline for further changes.
* pkg/subsystem/linux: more subsystem postprocessingAleksandr Nogikh2023-02-102-5/+131
| | | | | Instead of just assigning parents, also remove small and highly overlapping subsystems.
* pkg/subsystem: remove unneeded paths from matching rulesAleksandr Nogikh2023-02-102-0/+24
| | | | | We don't really care about Documentation/ and similar folders. Exclude such path matching rules after parsing MAINTAINERS.
* pkg/subsystem: extract subsystems from a crash listAleksandr Nogikh2023-02-101-16/+1
| | | | | | | | For now, let's use a straightforward approach: 1) Extract all subsystems for each guilty path and syz reproducer. 2) If there are both parents and children in the list, remove parents. 3) Count the remaining subsystems. 4) Pick the ones that appear most often.
* pkg/subsystem/linux: determine parent-child relationsAleksandr Nogikh2023-02-104-10/+247
| | | | | | | | | For that, extract a coincidence count matrix from a path coverage, then apply the following rule. Subsystem A is a child of B if both hold true: 1) More than 2/3 of paths that relate to A also relate to B. 2) B covers more directory tree entities than A.
* pkg/subsystem/linux: keep one list for list-merged groupsAleksandr Nogikh2023-02-102-9/+13
| | | | Otherwise we can get too many mailing lists at the same time.
* pkg/subsystem/linux: test path rules of subsystemsAleksandr Nogikh2023-02-101-0/+62
| | | | | Now that we have subsystem names, it's easy to test whether syzkaller extract and groups the path matching rules correctly.
* pkg/subsystem/linux: add custom call listsAleksandr Nogikh2023-02-103-1/+82
| | | | This information will let us extract subsystems from reproducers.
* pkg/subsystem/linux: extract names for subsystemsAleksandr Nogikh2023-02-104-0/+226
| | | | | | | | | Extract the short subsystem name from the mailing list email. Stip the common prefixes and suffixes and make sure there are no duplicates. As a fallback, assign the whole list email address as a subsystem name.
* pkg/subsystem/linux: add the basic subsystem extraction codeAleksandr Nogikh2023-02-103-0/+269
|
* pkg/subsystem/linux: convert MAINTAINERS patters to regexpsAleksandr Nogikh2023-02-102-0/+202
| | | | Take care of the corner cases and add extensive tests.
* pkg/subsystem: add the MAINTAINERS file parsing codeAleksandr Nogikh2023-02-103-0/+329