Add Kconfig and Makefile infrastructure. The implementation is located under `mm/kstackwatch/`.
Signed-off-by: Jinchao Wang <[email protected]> --- include/linux/kstackwatch.h | 5 +++++ mm/Kconfig | 1 + mm/Makefile | 1 + mm/kstackwatch/Kconfig | 14 ++++++++++++++ mm/kstackwatch/Makefile | 2 ++ mm/kstackwatch/kernel.c | 23 +++++++++++++++++++++++ mm/kstackwatch/stack.c | 1 + mm/kstackwatch/watch.c | 1 + 8 files changed, 48 insertions(+) create mode 100644 include/linux/kstackwatch.h create mode 100644 mm/kstackwatch/Kconfig create mode 100644 mm/kstackwatch/Makefile create mode 100644 mm/kstackwatch/kernel.c create mode 100644 mm/kstackwatch/stack.c create mode 100644 mm/kstackwatch/watch.c diff --git a/include/linux/kstackwatch.h b/include/linux/kstackwatch.h new file mode 100644 index 000000000000..0273ef478a26 --- /dev/null +++ b/include/linux/kstackwatch.h @@ -0,0 +1,5 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _KSTACKWATCH_H +#define _KSTACKWATCH_H + +#endif /* _KSTACKWATCH_H */ diff --git a/mm/Kconfig b/mm/Kconfig index 0e26f4fc8717..61d4e6edadf2 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -1373,5 +1373,6 @@ config FIND_NORMAL_PAGE def_bool n source "mm/damon/Kconfig" +source "mm/kstackwatch/Kconfig" endmenu diff --git a/mm/Makefile b/mm/Makefile index 21abb3353550..efc101816f00 100644 --- a/mm/Makefile +++ b/mm/Makefile @@ -92,6 +92,7 @@ obj-$(CONFIG_PAGE_POISONING) += page_poison.o obj-$(CONFIG_KASAN) += kasan/ obj-$(CONFIG_KFENCE) += kfence/ obj-$(CONFIG_KMSAN) += kmsan/ +obj-$(CONFIG_KSTACKWATCH) += kstackwatch/ obj-$(CONFIG_FAILSLAB) += failslab.o obj-$(CONFIG_FAIL_PAGE_ALLOC) += fail_page_alloc.o obj-$(CONFIG_MEMTEST) += memtest.o diff --git a/mm/kstackwatch/Kconfig b/mm/kstackwatch/Kconfig new file mode 100644 index 000000000000..496caf264f35 --- /dev/null +++ b/mm/kstackwatch/Kconfig @@ -0,0 +1,14 @@ +config KSTACKWATCH + bool "Kernel Stack Watch" + depends on HAVE_HW_BREAKPOINT && KPROBES && FPROBE && STACKTRACE + help + A lightweight real-time debugging tool to detect stack corruption + and abnormal stack usage patterns in the kernel. It monitors stack + boundaries and detects overwrites in real time using hardware + breakpoints and probe-based instrumentation. + + This feature is intended for kernel developers or advanced users + diagnosing rare stack overflow or memory corruption bugs. It may + introduce minor overhead during runtime monitoring. + + If unsure, say N. diff --git a/mm/kstackwatch/Makefile b/mm/kstackwatch/Makefile new file mode 100644 index 000000000000..c99c621eac02 --- /dev/null +++ b/mm/kstackwatch/Makefile @@ -0,0 +1,2 @@ +obj-$(CONFIG_KSTACKWATCH) += kstackwatch.o +kstackwatch-y := kernel.o stack.o watch.o diff --git a/mm/kstackwatch/kernel.c b/mm/kstackwatch/kernel.c new file mode 100644 index 000000000000..78f1d019225f --- /dev/null +++ b/mm/kstackwatch/kernel.c @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include <linux/module.h> + +static int __init kstackwatch_init(void) +{ + pr_info("module loaded\n"); + return 0; +} + +static void __exit kstackwatch_exit(void) +{ + pr_info("module unloaded\n"); +} + +module_init(kstackwatch_init); +module_exit(kstackwatch_exit); + +MODULE_AUTHOR("Jinchao Wang"); +MODULE_DESCRIPTION("Kernel Stack Watch"); +MODULE_LICENSE("GPL"); + diff --git a/mm/kstackwatch/stack.c b/mm/kstackwatch/stack.c new file mode 100644 index 000000000000..cec594032515 --- /dev/null +++ b/mm/kstackwatch/stack.c @@ -0,0 +1 @@ +// SPDX-License-Identifier: GPL-2.0 diff --git a/mm/kstackwatch/watch.c b/mm/kstackwatch/watch.c new file mode 100644 index 000000000000..cec594032515 --- /dev/null +++ b/mm/kstackwatch/watch.c @@ -0,0 +1 @@ +// SPDX-License-Identifier: GPL-2.0 -- 2.43.0
