Messages in this thread Patch in this message | | | Subject | [PATCH] kmemleak: clear stale pointers from task stacks | From | Konstantin Khlebnikov <> | Date | Fri, 06 Oct 2017 14:38:21 +0300 |
| |
Kmemleak considers any pointers as task stacks as references. This patch clears newly allocated and reused vmap stacks.
Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> --- include/linux/thread_info.h | 2 +- kernel/fork.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h index 905d769d8ddc..5f7eeab990fe 100644 --- a/include/linux/thread_info.h +++ b/include/linux/thread_info.h @@ -42,7 +42,7 @@ enum { #define THREAD_ALIGN THREAD_SIZE #endif -#ifdef CONFIG_DEBUG_STACK_USAGE +#if IS_ENABLED(CONFIG_DEBUG_STACK_USAGE) || IS_ENABLED(CONFIG_DEBUG_KMEMLEAK) # define THREADINFO_GFP (GFP_KERNEL_ACCOUNT | __GFP_NOTRACK | \ __GFP_ZERO) #else diff --git a/kernel/fork.c b/kernel/fork.c index c4ff0303b7c5..53e3b6f8a3bf 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -213,6 +213,10 @@ static unsigned long *alloc_thread_stack_node(struct task_struct *tsk, int node) if (!s) continue; +#ifdef CONFIG_DEBUG_KMEMLEAK + /* Clear stale pointers from reused stack. */ + memset(s->addr, 0, THREAD_SIZE); +#endif tsk->stack_vm_area = s; return s->addr; }
| |