diff options
Diffstat (limited to 'arch/x86/include/asm/stacktrace.h')
| -rw-r--r-- | arch/x86/include/asm/stacktrace.h | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/arch/x86/include/asm/stacktrace.h b/arch/x86/include/asm/stacktrace.h index f248eb2ac2d4..3881b5333eb8 100644 --- a/arch/x86/include/asm/stacktrace.h +++ b/arch/x86/include/asm/stacktrace.h @@ -38,6 +38,16 @@ int get_stack_info(unsigned long *stack, struct task_struct *task,  bool get_stack_info_noinstr(unsigned long *stack, struct task_struct *task,  			    struct stack_info *info); +static __always_inline +bool get_stack_guard_info(unsigned long *stack, struct stack_info *info) +{ +	/* make sure it's not in the stack proper */ +	if (get_stack_info_noinstr(stack, current, info)) +		return false; +	/* but if it is in the page below it, we hit a guard */ +	return get_stack_info_noinstr((void *)stack + PAGE_SIZE, current, info); +} +  const char *stack_type_name(enum stack_type type);  static inline bool on_stack(struct stack_info *info, void *addr, size_t len) |