Commit | Line | Data |
---|---|---|
afaef01c AP |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef _LINUX_STACKLEAK_H | |
3 | #define _LINUX_STACKLEAK_H | |
4 | ||
5 | #include <linux/sched.h> | |
6 | #include <linux/sched/task_stack.h> | |
7 | ||
8 | /* | |
9 | * Check that the poison value points to the unused hole in the | |
10 | * virtual memory map for your platform. | |
11 | */ | |
12 | #define STACKLEAK_POISON -0xBEEF | |
13 | #define STACKLEAK_SEARCH_DEPTH 128 | |
14 | ||
15 | #ifdef CONFIG_GCC_PLUGIN_STACKLEAK | |
16 | #include <asm/stacktrace.h> | |
17 | ||
18 | static inline void stackleak_task_init(struct task_struct *t) | |
19 | { | |
20 | t->lowest_stack = (unsigned long)end_of_stack(t) + sizeof(unsigned long); | |
c8d12627 AP |
21 | # ifdef CONFIG_STACKLEAK_METRICS |
22 | t->prev_lowest_stack = t->lowest_stack; | |
23 | # endif | |
afaef01c | 24 | } |
964c9dff | 25 | |
afaef01c AP |
26 | #else /* !CONFIG_GCC_PLUGIN_STACKLEAK */ |
27 | static inline void stackleak_task_init(struct task_struct *t) { } | |
28 | #endif | |
29 | ||
30 | #endif |