mm/kasan: Print frame description for stack bugs
Subsystems (2)
PATCH v3 1/1 mm/kasan: Print frame description for stack bugs
This adds support for printing stack frame description on invalid stack accesses. The frame description is embedded by the compiler, which is parsed and then pretty-printed.
Currently, we can only print the stack frame info for accesses to the task's own stack, but not accesses to other tasks' stacks.
Example of what it looks like:
[ 17.924050] page dumped because: kasan: bad access detected [ 17.924908] [ 17.925153] addr ffff8880673ef98a is located in stack of task insmod/2008 at offset 106 in frame: [ 17.926542] kasan_stack_oob+0x0/0xf5 [test_kasan] [ 17.927932] [ 17.928206] this frame has 2 objects: [ 17.928783] [32, 36) 'i' [ 17.928784] [96, 106) 'stack_array' [ 17.929216] [ 17.930031] Memory state around the buggy address:
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=198435
---
Changes since v2:
- Comment about why line number is stripped.
- Add BUILD_BUG_ON(CONFIG_STACK_GROWSUP).
Changes since v1:
- Fix types in printf (%zu -> %lu).
- Prefer 'unsigned long', to ensure offset/points are pointer sized, as emitted by ASAN instrumentation.
Change-Id: I4836cde103052991ac8871796a45b4c977c9e2e7
--- mm/kasan/kasan.h | 5 ++ mm/kasan/report.c | 165 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+)
mm/kasan/kasan.h +5 -0
@@ -43,6 +43,11 @@#define KASAN_ALLOCA_REDZONE_SIZE 32 +/* +* Stack frame marker (compiler ABI). +*/ +#define KASAN_CURRENT_STACK_FRAME_MAGIC 0x41B58AB3 +/* Don't break randconfig/all*config builds */ #ifndef KASAN_ABI_VERSION #define KASAN_ABI_VERSION 1
mm/kasan/report.c +165 -0
183 lines not on this page · raw message
Signature · 1 line
2.21.0.1020.gf2820cf01a-goog
Quoted 20 lines · Marco Elver
This adds support for printing stack frame description on invalid stack accesses. The frame description is embedded by the compiler, which is parsed and then pretty-printed.
Currently, we can only print the stack frame info for accesses to the task's own stack, but not accesses to other tasks' stacks.
Example of what it looks like:
[ 17.924050] page dumped because: kasan: bad access detected [ 17.924908] [ 17.925153] addr ffff8880673ef98a is located in stack of task insmod/2008 at offset 106 in frame: [ 17.926542] kasan_stack_oob+0x0/0xf5 [test_kasan] [ 17.927932] [ 17.928206] this frame has 2 objects: [ 17.928783] [32, 36) 'i' [ 17.928784] [96, 106) 'stack_array' [ 17.929216] [ 17.930031] Memory state around the buggy address:
Quoted 2 lines
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=198435
Signed-off-by Marco Elver <[email protected]>