Introduce struct kstackwatch_ctx to enable lockless per-task state tracking. This is required because KStackWatch operates in NMI context (via kprobe handler) where traditional locking is unsafe. Signed-off-by: Jinchao Wang --- include/linux/kstackwatch_types.h | 13 +++++++++++++ include/linux/sched.h | 5 +++++ 2 files changed, 18 insertions(+) create mode 100644 include/linux/kstackwatch_types.h diff --git a/include/linux/kstackwatch_types.h b/include/linux/kstackwatch_types.h new file mode 100644 index 000000000000..93855fcc7981 --- /dev/null +++ b/include/linux/kstackwatch_types.h @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_KSTACK_WATCH_TYPES_H +#define _LINUX_KSTACK_WATCH_TYPES_H +#include + +struct kstackwatch_ctx { + ulong watch_addr; + u16 watch_len; + u16 depth; + bool watch_on; +}; + +#endif /* _LINUX_KSTACK_WATCH_TYPES_H */ diff --git a/include/linux/sched.h b/include/linux/sched.h index f8188b833350..1b324b458309 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -1481,6 +1482,10 @@ struct task_struct { struct kmsan_ctx kmsan_ctx; #endif +#if IS_ENABLED(CONFIG_KSTACK_WATCH) + struct kstackwatch_ctx kstackwatch_ctx; +#endif + #if IS_ENABLED(CONFIG_KUNIT) struct kunit *kunit_test; #endif -- 2.43.0