KASAN Stack Out-of-Bounds Detection

Test Module Source

This C code, intentionally introduces Array Out of Bounds writing at Line 9

 1#include <linux/module.h>
 2#include <linux/kernel.h>
 3#include <linux/sched.h>
 4
 5static void trigger_stack_overflow(void)
 6{
 7    char stack_array[8];
 8
 9    stack_array[9] = 'X';
10}
11
12static int __init kasan_stack_test_init(void)
13{
14	pr_info("KASAN Stack Test Module Loaded\n");
15
16	trigger_stack_overflow();
17
18	return 0;
19}
20
21static void __exit kasan_stack_test_exit(void)
22{
23	pr_info("KASAN Stack Test Module Unloaded\n");
24}
25
26module_init(kasan_stack_test_init);
27module_exit(kasan_stack_test_exit);
28
29MODULE_LICENSE("GPL");
30MODULE_AUTHOR("Gemini");

Build Configuration

The following Makefile automates the build process using the standard Linux Kbuild system.

 1# Name of the object file (must match your .c filename)
 2obj-m += kasan_stack_test.o
 3
 4# This is the magic variable that tells Kbuild to instrument this module
 5# KASAN_SANITIZE_kasan_stack_test.o := y
 6
 7# Disable optimizations to prevent the compiler from hiding the bug
 8#ccflags-y += -O0 -fno-stack-protector
 9#ccflags-y += -fno-stack-protector
10ccflags-y += -O0
11
12# Path to the kernel build directory
13KDIR := /lib/modules/$(shell uname -r)/build
14PWD := $(shell pwd)
15
16all:
17	$(MAKE) -C $(KDIR) M=$(PWD) modules V=1
18
19clean:
20	$(MAKE) -C $(KDIR) M=$(PWD) clean
21
22# Shortcut to load and check logs
23test: all
24	sudo dmesg -C
25	sudo insmod kasan_stack_test.ko
26	sudo dmesg
27	sudo rmmod kasan_stack_test

Execution Logs

The following three sections show the step-by-step terminal output from cleaning, building, and executing the test.

Step 1: make clean

make -C /lib/modules/6.19.9/build M=/home/test/Downloads/web-dev/c-pointers/pycon-sphinx-tutorial/crawler/docs/lkd/kasan/kasan_stack_test clean
make[1]: Entering directory '/home/test/Downloads/linux-6.19.9'
make[2]: Entering directory '/home/test/Downloads/web-dev/c-pointers/pycon-sphinx-tutorial/crawler/docs/lkd/kasan/kasan_stack_test'
  CLEAN   Module.symvers
make[2]: Leaving directory '/home/test/Downloads/web-dev/c-pointers/pycon-sphinx-tutorial/crawler/docs/lkd/kasan/kasan_stack_test'
make[1]: Leaving directory '/home/test/Downloads/linux-6.19.9'

Step 2: make all

make -C /lib/modules/6.19.9/build M=/home/test/Downloads/web-dev/c-pointers/pycon-sphinx-tutorial/crawler/docs/lkd/kasan/kasan_stack_test modules V=1
make[1]: Entering directory '/home/test/Downloads/linux-6.19.9'
make  -C /home/test/Downloads/web-dev/c-pointers/pycon-sphinx-tutorial/crawler/docs/lkd/kasan/kasan_stack_test \
-f /home/test/Downloads/linux-6.19.9/Makefile modules
make[2]: Entering directory '/home/test/Downloads/web-dev/c-pointers/pycon-sphinx-tutorial/crawler/docs/lkd/kasan/kasan_stack_test'
make --no-print-directory -C /home/test/Downloads/web-dev/c-pointers/pycon-sphinx-tutorial/crawler/docs/lkd/kasan/kasan_stack_test \
-f /home/test/Downloads/linux-6.19.9/Makefile modules
make -f /home/test/Downloads/linux-6.19.9/scripts/Makefile.build obj=. need-builtin=1 need-modorder=1 
# CC [M]  kasan_stack_test.o
  gcc -Wp,-MMD,./.kasan_stack_test.o.d -nostdinc -I/home/test/Downloads/linux-6.19.9/arch/x86/include -I/home/test/Downloads/linux-6.19.9/arch/x86/include/generated -I/home/test/Downloads/linux-6.19.9/include -I/home/test/Downloads/linux-6.19.9/include -I/home/test/Downloads/linux-6.19.9/arch/x86/include/uapi -I/home/test/Downloads/linux-6.19.9/arch/x86/include/generated/uapi -I/home/test/Downloads/linux-6.19.9/include/uapi -I/home/test/Downloads/linux-6.19.9/include/generated/uapi -include /home/test/Downloads/linux-6.19.9/include/linux/compiler-version.h -include /home/test/Downloads/linux-6.19.9/include/linux/kconfig.h -include /home/test/Downloads/linux-6.19.9/include/linux/compiler_types.h -D__KERNEL__ -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -mno-sse4a -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -march=x86-64 -mtune=generic -mno-red-zone -mcmodel=kernel -mstack-protector-guard-reg=gs -mstack-protector-guard-symbol=__ref_stack_chk_guard -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -mindirect-branch-cs-prefix -mfunction-return=thunk-extern -fno-jump-tables -fpatchable-function-entry=16,16 -fno-delete-null-pointer-checks -O2 -fno-allow-store-data-races -fstack-protector-strong -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-stack-clash-protection -fzero-call-used-regs=used-gpr -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -falign-functions=16 -fms-extensions -fno-strict-overflow -fno-stack-check -fconserve-stack -fno-builtin-wcslen -Wall -Wextra -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=1024 -Wno-main -Wvla-larger-than=1 -Wno-pointer-sign -Wcast-function-type -Wno-array-bounds -Wno-stringop-overflow -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wunused -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -Wno-unused-parameter -g -gdwarf-5 -O0   -fsanitize=kernel-address -fasan-shadow-offset=0xdffffc0000000000   --param asan-instrumentation-with-call-threshold=0   --param asan-stack=1   --param asan-instrument-allocas=1   --param asan-globals=1    -DMODULE  -DKBUILD_BASENAME='"kasan_stack_test"' -DKBUILD_MODNAME='"kasan_stack_test"' -D__KBUILD_MODNAME=kasan_stack_test -c -o kasan_stack_test.o kasan_stack_test.c   ; /home/test/Downloads/linux-6.19.9/tools/objtool/objtool --hacks=jump_label --hacks=noinstr --hacks=skylake --retpoline --rethunk --stackval --static-call --uaccess --prefix=16  --link  --module kasan_stack_test.o
# cmd_gen_objtooldep kasan_stack_test.o
   { echo ; echo 'kasan_stack_test.o: $(wildcard /home/test/Downloads/linux-6.19.9/tools/objtool/objtool)' ; } >> ./.kasan_stack_test.o.cmd
# cmd_gen_symversions_c kasan_stack_test.o
  if nm kasan_stack_test.o 2>/dev/null | grep -q ' __export_symbol_'; then gcc -E -D__GENKSYMS__ -Wp,-MMD,./.kasan_stack_test.o.d -nostdinc -I/home/test/Downloads/linux-6.19.9/arch/x86/include -I/home/test/Downloads/linux-6.19.9/arch/x86/include/generated -I/home/test/Downloads/linux-6.19.9/include -I/home/test/Downloads/linux-6.19.9/include -I/home/test/Downloads/linux-6.19.9/arch/x86/include/uapi -I/home/test/Downloads/linux-6.19.9/arch/x86/include/generated/uapi -I/home/test/Downloads/linux-6.19.9/include/uapi -I/home/test/Downloads/linux-6.19.9/include/generated/uapi -include /home/test/Downloads/linux-6.19.9/include/linux/compiler-version.h -include /home/test/Downloads/linux-6.19.9/include/linux/kconfig.h -include /home/test/Downloads/linux-6.19.9/include/linux/compiler_types.h -D__KERNEL__ -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -mno-sse4a -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -march=x86-64 -mtune=generic -mno-red-zone -mcmodel=kernel -mstack-protector-guard-reg=gs -mstack-protector-guard-symbol=__ref_stack_chk_guard -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -mindirect-branch-cs-prefix -mfunction-return=thunk-extern -fno-jump-tables -fpatchable-function-entry=16,16 -fno-delete-null-pointer-checks -O2 -fno-allow-store-data-races -fstack-protector-strong -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-stack-clash-protection -fzero-call-used-regs=used-gpr -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -falign-functions=16 -fms-extensions -fno-strict-overflow -fno-stack-check -fconserve-stack -fno-builtin-wcslen -Wall -Wextra -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=1024 -Wno-main -Wvla-larger-than=1 -Wno-pointer-sign -Wcast-function-type -Wno-array-bounds -Wno-stringop-overflow -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wunused -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -Wno-unused-parameter -g -gdwarf-5 -O0   -fsanitize=kernel-address -fasan-shadow-offset=0xdffffc0000000000   --param asan-instrumentation-with-call-threshold=0   --param asan-stack=1   --param asan-instrument-allocas=1   --param asan-globals=1    -DMODULE  -DKBUILD_BASENAME='"kasan_stack_test"' -DKBUILD_MODNAME='"kasan_stack_test"' -D__KBUILD_MODNAME=kasan_stack_test kasan_stack_test.c | /home/test/Downloads/linux-6.19.9/scripts/genksyms/genksyms    >> ./.kasan_stack_test.o.cmd; fi
# cmd_mod kasan_stack_test.mod
  printf '%s
'   kasan_stack_test.o | awk '!x[$0]++ { print("./"$0) }' > kasan_stack_test.mod
# cmd_gen_order modules.order
  {   echo kasan_stack_test.o; :; } > modules.order
sh /home/test/Downloads/linux-6.19.9/scripts/modules-check.sh modules.order
make -f /home/test/Downloads/linux-6.19.9/scripts/Makefile.modpost
# MODPOST Module.symvers
   /home/test/Downloads/linux-6.19.9/scripts/mod/modpost -M -m -b  -a      -o Module.symvers -T modules.order -i /home/test/Downloads/linux-6.19.9/Module.symvers -e 
WARNING: modpost: missing MODULE_DESCRIPTION() in kasan_stack_test.o
make -f /home/test/Downloads/linux-6.19.9/scripts/Makefile.modfinal
# CC [M]  kasan_stack_test.mod.o
  gcc -Wp,-MMD,./.kasan_stack_test.mod.o.d -nostdinc -I/home/test/Downloads/linux-6.19.9/arch/x86/include -I/home/test/Downloads/linux-6.19.9/arch/x86/include/generated -I/home/test/Downloads/linux-6.19.9/include -I/home/test/Downloads/linux-6.19.9/include -I/home/test/Downloads/linux-6.19.9/arch/x86/include/uapi -I/home/test/Downloads/linux-6.19.9/arch/x86/include/generated/uapi -I/home/test/Downloads/linux-6.19.9/include/uapi -I/home/test/Downloads/linux-6.19.9/include/generated/uapi -include /home/test/Downloads/linux-6.19.9/include/linux/compiler-version.h -include /home/test/Downloads/linux-6.19.9/include/linux/kconfig.h -include /home/test/Downloads/linux-6.19.9/include/linux/compiler_types.h -D__KERNEL__ -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -mno-sse4a -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -march=x86-64 -mtune=generic -mno-red-zone -mcmodel=kernel -mstack-protector-guard-reg=gs -mstack-protector-guard-symbol=__ref_stack_chk_guard -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -mindirect-branch-cs-prefix -mfunction-return=thunk-extern -fno-jump-tables -fpatchable-function-entry=16,16 -fno-delete-null-pointer-checks -O2 -fno-allow-store-data-races -fstack-protector-strong -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-stack-clash-protection -fzero-call-used-regs=used-gpr -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -falign-functions=16 -fms-extensions -fno-strict-overflow -fno-stack-check -fconserve-stack -fno-builtin-wcslen -Wall -Wextra -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=1024 -Wno-main -Wvla-larger-than=1 -Wno-pointer-sign -Wcast-function-type -Wno-array-bounds -Wno-stringop-overflow -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wunused -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -Wno-unused-parameter -g -gdwarf-5   -fsanitize=kernel-address -fasan-shadow-offset=0xdffffc0000000000   --param asan-instrumentation-with-call-threshold=0   --param asan-stack=1   --param asan-instrument-allocas=1   --param asan-globals=1    -DMODULE  -DKBUILD_BASENAME='"kasan_stack_test.mod"' -DKBUILD_MODNAME='"kasan_stack_test"' -D__KBUILD_MODNAME=kasan_stack_test -c -o kasan_stack_test.mod.o kasan_stack_test.mod.c   ; /home/test/Downloads/linux-6.19.9/tools/objtool/objtool --hacks=jump_label --hacks=noinstr --hacks=skylake --retpoline --rethunk --stackval --static-call --uaccess --prefix=16  --link  --module kasan_stack_test.mod.o
# cmd_gen_objtooldep kasan_stack_test.mod.o
   { echo ; echo 'kasan_stack_test.mod.o: $(wildcard /home/test/Downloads/linux-6.19.9/tools/objtool/objtool)' ; } >> ./.kasan_stack_test.mod.o.cmd
# CC [M]  .module-common.o
  gcc -Wp,-MMD,./..module-common.o.d -nostdinc -I/home/test/Downloads/linux-6.19.9/arch/x86/include -I/home/test/Downloads/linux-6.19.9/arch/x86/include/generated -I/home/test/Downloads/linux-6.19.9/include -I/home/test/Downloads/linux-6.19.9/include -I/home/test/Downloads/linux-6.19.9/arch/x86/include/uapi -I/home/test/Downloads/linux-6.19.9/arch/x86/include/generated/uapi -I/home/test/Downloads/linux-6.19.9/include/uapi -I/home/test/Downloads/linux-6.19.9/include/generated/uapi -include /home/test/Downloads/linux-6.19.9/include/linux/compiler-version.h -include /home/test/Downloads/linux-6.19.9/include/linux/kconfig.h -include /home/test/Downloads/linux-6.19.9/include/linux/compiler_types.h -D__KERNEL__ -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -mno-sse4a -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -march=x86-64 -mtune=generic -mno-red-zone -mcmodel=kernel -mstack-protector-guard-reg=gs -mstack-protector-guard-symbol=__ref_stack_chk_guard -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -mindirect-branch-cs-prefix -mfunction-return=thunk-extern -fno-jump-tables -fpatchable-function-entry=16,16 -fno-delete-null-pointer-checks -O2 -fno-allow-store-data-races -fstack-protector-strong -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-stack-clash-protection -fzero-call-used-regs=used-gpr -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -falign-functions=16 -fms-extensions -fno-strict-overflow -fno-stack-check -fconserve-stack -fno-builtin-wcslen -Wall -Wextra -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=1024 -Wno-main -Wvla-larger-than=1 -Wno-pointer-sign -Wcast-function-type -Wno-array-bounds -Wno-stringop-overflow -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wunused -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -Wno-unused-parameter -g -gdwarf-5   -fsanitize=kernel-address -fasan-shadow-offset=0xdffffc0000000000   --param asan-instrumentation-with-call-threshold=0   --param asan-stack=1   --param asan-instrument-allocas=1   --param asan-globals=1    -DMODULE  -DKBUILD_BASENAME='".module_common"' -DKBUILD_MODNAME='".module_common.o"' -D__KBUILD_MODNAME=.module_common.o -c -o .module-common.o /home/test/Downloads/linux-6.19.9/scripts/module-common.c   ; /home/test/Downloads/linux-6.19.9/tools/objtool/objtool --hacks=jump_label --hacks=noinstr --hacks=skylake --retpoline --rethunk --stackval --static-call --uaccess --prefix=16  --link  --module .module-common.o
# cmd_gen_objtooldep .module-common.o
   { echo ; echo '.module-common.o: $(wildcard /home/test/Downloads/linux-6.19.9/tools/objtool/objtool)' ; } >> ./..module-common.o.cmd
# LD [M]  kasan_stack_test.ko
  ld -r -m elf_x86_64 -z noexecstack --build-id=sha1  -T /home/test/Downloads/linux-6.19.9/scripts/module.lds -o kasan_stack_test.ko kasan_stack_test.o kasan_stack_test.mod.o .module-common.o
make[2]: Leaving directory '/home/test/Downloads/web-dev/c-pointers/pycon-sphinx-tutorial/crawler/docs/lkd/kasan/kasan_stack_test'
make[1]: Leaving directory '/home/test/Downloads/linux-6.19.9'

Step 3: make test

[ 2548.780349] KASAN Stack Test Module Loaded
[ 2548.780357] ==================================================================
[ 2548.780364] BUG: KASAN: stack-out-of-bounds in trigger_stack_overflow+0x6e/0xb0 [kasan_stack_test]
[ 2548.780378] Write of size 1 at addr ffffc9002022f599 by task insmod/10198

[ 2548.780391] CPU: 0 UID: 0 PID: 10198 Comm: insmod Tainted: G    B      OE       6.19.9 #6 PREEMPT(voluntary) 
[ 2548.780400] Tainted: [B]=BAD_PAGE, [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
[ 2548.780403] Hardware name: LENOVO 20RV/LNVNB161216, BIOS CJCN41WW 03/13/2023
[ 2548.780406] Call Trace:
[ 2548.780408]  <TASK>
[ 2548.780410]  dump_stack_lvl+0x76/0xa0
[ 2548.780418]  print_report+0xce/0x5e0
[ 2548.780425]  ? __virt_addr_valid+0x50/0x1c0
[ 2548.780431]  ? trigger_stack_overflow+0x6e/0xb0 [kasan_stack_test]
[ 2548.780439]  ? kasan_addr_to_slab+0xd/0x90
[ 2548.780445]  ? trigger_stack_overflow+0x6e/0xb0 [kasan_stack_test]
[ 2548.780454]  kasan_report+0xc6/0x100
[ 2548.780460]  ? trigger_stack_overflow+0x6e/0xb0 [kasan_stack_test]
[ 2548.780472]  __asan_store1+0x6f/0x80
[ 2548.780478]  trigger_stack_overflow+0x6e/0xb0 [kasan_stack_test]
[ 2548.780487]  ? __pfx_trigger_stack_overflow+0x10/0x10 [kasan_stack_test]
[ 2548.780497]  ? __pfx_kasan_stack_test_init+0x10/0x10 [kasan_stack_test]
[ 2548.780506]  kasan_stack_test_init+0x1a/0xff0 [kasan_stack_test]
[ 2548.780515]  do_one_initcall+0x9b/0x380
[ 2548.780521]  ? __pfx_do_one_initcall+0x10/0x10
[ 2548.780526]  ? __kasan_kmalloc+0xc1/0xd0
[ 2548.780532]  ? __kmalloc_cache_noprof+0x1e5/0x5c0
[ 2548.780537]  ? kasan_poison+0x3a/0x70
[ 2548.780542]  ? kasan_unpoison+0x28/0x70
[ 2548.780547]  ? kasan_poison+0x3a/0x70
[ 2548.780552]  ? __asan_register_globals+0x5e/0x90
[ 2548.780559]  do_init_module+0x1eb/0x520
[ 2548.780567]  ? __pfx_do_init_module+0x10/0x10
[ 2548.780573]  ? klp_module_coming+0x2ac/0x3e0
[ 2548.780587]  load_module+0x3a6c/0x3bd0
[ 2548.780600]  ? __pfx_load_module+0x10/0x10
[ 2548.780605]  ? __pfx_ima_post_read_file+0x10/0x10
[ 2548.780618]  ? security_file_permission+0x13c/0x160
[ 2548.780627]  ? rw_verify_area+0x9b/0x260
[ 2548.780632]  ? __vmalloc_node_noprof+0xa7/0xe0
[ 2548.780639]  ? __kasan_check_write+0x14/0x30
[ 2548.780644]  ? kernel_read_file+0x1e1/0x4d0
[ 2548.780651]  ? __pfx_kernel_read_file+0x10/0x10
[ 2548.780658]  init_module_from_file+0x192/0x1c0
[ 2548.780663]  ? init_module_from_file+0x192/0x1c0
[ 2548.780669]  ? __pfx_init_module_from_file+0x10/0x10
[ 2548.780674]  ? ksys_mmap_pgoff+0x1ca/0x2b0
[ 2548.780682]  ? __kasan_check_write+0x14/0x30
[ 2548.780687]  ? _raw_spin_lock+0x81/0xf0
[ 2548.780693]  ? __pfx__raw_spin_lock+0x10/0x10
[ 2548.780699]  ? __kasan_check_read+0x11/0x20
[ 2548.780704]  ? fpregs_assert_state_consistent+0x7e/0x90
[ 2548.780711]  idempotent_init_module+0x29d/0x3f0
[ 2548.780717]  ? __pfx_idempotent_init_module+0x10/0x10
[ 2548.780725]  ? __kasan_check_read+0x11/0x20
[ 2548.780729]  ? fdget+0xa0/0x1c0
[ 2548.780736]  __x64_sys_finit_module+0x91/0x110
[ 2548.780741]  ? __kasan_check_read+0x11/0x20
[ 2548.780747]  x64_sys_call+0x1bba/0x2780
[ 2548.780752]  do_syscall_64+0x7c/0x580
[ 2548.780758]  ? putname.part.0+0x64/0xb0
[ 2548.780764]  ? putname+0x1c/0x30
[ 2548.780768]  ? do_sys_openat2+0xf9/0x180
[ 2548.780773]  ? __pfx_do_sys_openat2+0x10/0x10
[ 2548.780780]  ? __kasan_check_read+0x11/0x20
[ 2548.780784]  ? count_memcg_events+0x1b4/0x240
[ 2548.780791]  ? __x64_sys_openat+0xe5/0x170
[ 2548.780797]  ? __pfx___x64_sys_openat+0x10/0x10
[ 2548.780802]  ? __kasan_check_read+0x11/0x20
[ 2548.780807]  ? fpregs_assert_state_consistent+0x7e/0x90
[ 2548.780813]  ? __kasan_check_read+0x11/0x20
[ 2548.780818]  ? fpregs_assert_state_consistent+0x7e/0x90
[ 2548.780823]  ? clear_bhb_loop+0x50/0xa0
[ 2548.780828]  ? clear_bhb_loop+0x50/0xa0
[ 2548.780832]  ? clear_bhb_loop+0x50/0xa0
[ 2548.780837]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
[ 2548.780842] RIP: 0033:0x737ff531e90d
[ 2548.780846] Code: 5b 41 5c c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d f3 b4 0f 00 f7 d8 64 89 01 48
[ 2548.780851] RSP: 002b:00007ffe3dbe1768 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
[ 2548.780856] RAX: ffffffffffffffda RBX: 00005bc37e8577e0 RCX: 0000737ff531e90d
[ 2548.780860] RDX: 0000000000000000 RSI: 00005bc36116bcd2 RDI: 0000000000000003
[ 2548.780863] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[ 2548.780866] R10: 0000000000000003 R11: 0000000000000246 R12: 00005bc36116bcd2
[ 2548.780869] R13: 00005bc37e857750 R14: 00005bc36116a888 R15: 00005bc37e857900
[ 2548.780875]  </TASK>

[ 2548.780985] The buggy address belongs to stack of task insmod/10198
[ 2548.780989]  and is located at offset 41 in frame:
[ 2548.780993]  trigger_stack_overflow+0x0/0xb0 [kasan_stack_test]

[ 2548.781007] This frame has 1 object:
[ 2548.781011]  [32, 40) 'stack_array'

[ 2548.781019] The buggy address belongs to a vmalloc virtual mapping
[ 2548.781026] The buggy address belongs to the physical page:
[ 2548.781030] page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x2d pfn:0x149e27
[ 2548.781036] memcg:ffff8881178b6202
[ 2548.781039] flags: 0x17ffffc0000000(node=0|zone=2|lastcpupid=0x1fffff)
[ 2548.781048] raw: 0017ffffc0000000 0000000000000000 dead000000000122 0000000000000000
[ 2548.781053] raw: 000000000000002d 0000000000000000 00000001ffffffff ffff8881178b6202
[ 2548.781057] page dumped because: kasan: bad access detected

[ 2548.781063] Memory state around the buggy address:
[ 2548.781068]  ffffc9002022f480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 2548.781073]  ffffc9002022f500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1
[ 2548.781078] >ffffc9002022f580: f1 f1 00 f3 f3 f3 00 00 00 00 00 00 00 00 00 00
[ 2548.781082]                             ^
[ 2548.781087]  ffffc9002022f600: 00 f1 f1 f1 f1 00 00 00 00 00 00 00 00 f3 f3 f3
[ 2548.781092]  ffffc9002022f680: f3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 2548.781097] ==================================================================
[ 2548.963198] KASAN Stack Test Module Unloaded