diff options
| author | Taras Madan <tarasmadan@google.com> | 2025-07-04 12:36:55 +0200 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2025-07-04 10:53:06 +0000 |
| commit | 67b9eceff1ab48422b9c4934bd832124352c01ad (patch) | |
| tree | fa6442c37cfd7898965849a69c8fde47467e8149 /pkg | |
| parent | 528e2a84d2ba91a865c1689c1372db12509bf115 (diff) | |
pkg/report: split crash.KFENCE
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/report/crash/types.go | 56 | ||||
| -rw-r--r-- | pkg/report/linux.go | 4 | ||||
| -rw-r--r-- | pkg/report/title_to_type.go | 44 |
3 files changed, 76 insertions, 28 deletions
diff --git a/pkg/report/crash/types.go b/pkg/report/crash/types.go index 1b9457d1d..b93c80856 100644 --- a/pkg/report/crash/types.go +++ b/pkg/report/crash/types.go @@ -10,31 +10,37 @@ type Type string const ( UnknownType = Type("") // keep-sorted start - AtomicSleep = Type("ATOMIC_SLEEP") - Bug = Type("BUG") - DoS = Type("DoS") - Hang = Type("HANG") - KASANInvalidFree = Type("KASAN-INVALID-FREE") - KASANRead = Type("KASAN-READ") - KASANUnknown = Type("KASAN-UNKNOWN") - KASANUseAfterFreeRead = Type("KASAN-USE-AFTER-FREE-READ") - KASANUseAfterFreeWrite = Type("KASAN-USE-AFTER-FREE-WRITE") - KASANWrite = Type("KASAN-WRITE") - KCSANAssert = Type("KCSAN-ASSERT") - KCSANDataRace = Type("KCSAN-DATARACE") - KCSANUnknown = Type("KCSAN-UNKNOWN") - KFENCE = Type("KFENCE") - KMSANInfoLeak = Type("KMSAN-INFO-LEAK") - KMSANUninitValue = Type("KMSAN-UNINIT-VALUE") - KMSANUnknown = Type("KMSAN-UNKNOWN") - KMSANUseAfterFreeRead = Type("KMSAN-USE-AFTER-FREE-READ") - LockdepBug = Type("LOCKDEP") - MemoryLeak = Type("LEAK") - MemorySafetyBUG = Type("MEMORY_SAFETY_BUG") - MemorySafetyUBSAN = Type("MEMORY_SAFETY_UBSAN") - MemorySafetyWARNING = Type("MEMORY_SAFETY_WARNING") - UBSAN = Type("UBSAN") - Warning = Type("WARNING") + AtomicSleep = Type("ATOMIC_SLEEP") + Bug = Type("BUG") + DoS = Type("DoS") + Hang = Type("HANG") + KASANInvalidFree = Type("KASAN-INVALID-FREE") + KASANRead = Type("KASAN-READ") + KASANUnknown = Type("KASAN-UNKNOWN") + KASANUseAfterFreeRead = Type("KASAN-USE-AFTER-FREE-READ") + KASANUseAfterFreeWrite = Type("KASAN-USE-AFTER-FREE-WRITE") + KASANWrite = Type("KASAN-WRITE") + KCSANAssert = Type("KCSAN-ASSERT") + KCSANDataRace = Type("KCSAN-DATARACE") + KCSANUnknown = Type("KCSAN-UNKNOWN") + KFENCEInvalidFree = Type("KFENCE-INVALID-FREE") + KFENCEMemoryCorruption = Type("KFENCE-MEMORY-CORRUPTION") + KFENCERead = Type("KFENCE-READ") + KFENCEUnknown = Type("KFENCE-UNKNOWN") + KFENCEUseAfterFreeRead = Type("KFENCE-USE-AFTER-FREE-READ") + KFENCEUseAfterFreeWrite = Type("KFENCE-USE-AFTER-FREE-WRITE") + KFENCEWrite = Type("KFENCE-WRITE") + KMSANInfoLeak = Type("KMSAN-INFO-LEAK") + KMSANUninitValue = Type("KMSAN-UNINIT-VALUE") + KMSANUnknown = Type("KMSAN-UNKNOWN") + KMSANUseAfterFreeRead = Type("KMSAN-USE-AFTER-FREE-READ") + LockdepBug = Type("LOCKDEP") + MemoryLeak = Type("LEAK") + MemorySafetyBUG = Type("MEMORY_SAFETY_BUG") + MemorySafetyUBSAN = Type("MEMORY_SAFETY_UBSAN") + MemorySafetyWARNING = Type("MEMORY_SAFETY_WARNING") + UBSAN = Type("UBSAN") + Warning = Type("WARNING") // keep-sorted end LostConnection = Type("LOST_CONNECTION") SyzFailure = Type("SYZ_FAILURE") diff --git a/pkg/report/linux.go b/pkg/report/linux.go index ff5d6bf4e..c67274ac8 100644 --- a/pkg/report/linux.go +++ b/pkg/report/linux.go @@ -1526,8 +1526,8 @@ var linuxOopses = append([]*oops{ noStackTrace: true, }, { - title: compile("BUG: KFENCE: (use-after-free|out-of-bounds) ([a-z\\-]+) in {{FUNC}}"), - fmt: "KFENCE: %[1]v in %[4]v", + title: compile("BUG: KFENCE: (use-after-free|out-of-bounds) (read|write) in {{FUNC}}"), + fmt: "KFENCE: %[1]v %[2]v in %[4]v", alt: []string{"bad-access in %[4]v"}, stack: &stackFmt{ parts: []*regexp.Regexp{ diff --git a/pkg/report/title_to_type.go b/pkg/report/title_to_type.go index 72540b6c2..6ae14a121 100644 --- a/pkg/report/title_to_type.go +++ b/pkg/report/title_to_type.go @@ -13,6 +13,48 @@ var titleToType = []struct { }{ { includePrefixes: []string{ + "KFENCE: use-after-free write", + }, + crashType: crash.KFENCEUseAfterFreeWrite, + }, + { + includePrefixes: []string{ + "KFENCE: use-after-free read", + "KFENCE: use-after-free", // Read/Write is not clear. It is at least Read. + }, + crashType: crash.KFENCEUseAfterFreeRead, + }, + { + includePrefixes: []string{ + "KFENCE: invalid write", + "KFENCE: out-of-bounds write", + }, + crashType: crash.KFENCEWrite, + }, + { + includePrefixes: []string{ + // keep-sorted start + "KFENCE: invalid read", + "KFENCE: out-of-bounds read", + "KFENCE: out-of-bounds", // Read/Write is not clear. It is at least Read. + // keep-sorted end + }, + crashType: crash.KFENCERead, + }, + { + includePrefixes: []string{ + "KFENCE: memory corruption", + }, + crashType: crash.KFENCEMemoryCorruption, + }, + { + includePrefixes: []string{ + "KFENCE: invalid free", + }, + crashType: crash.KFENCEInvalidFree, + }, + { + includePrefixes: []string{ "KMSAN: uninit-value", }, crashType: crash.KMSANUninitValue, @@ -246,7 +288,7 @@ var titleToType = []struct { }, { includePrefixes: []string{"KFENCE:"}, - crashType: crash.KFENCE, + crashType: crash.KFENCEUnknown, }, { includePrefixes: []string{"KMSAN:"}, |
