FILE
shstk.h
File preview with syntax highlighting.
linux-6.19.14/arch/x86/include/asm/shstk.h
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _ASM_X86_SHSTK_H 3#define _ASM_X86_SHSTK_H 4 5#ifndef __ASSEMBLER__ 6#include <linux/types.h> 7 8struct task_struct; 9struct ksignal; 10 11#ifdef CONFIG_X86_USER_SHADOW_STACK 12struct thread_shstk { 13 u64 base; 14 u64 size; 15}; 16 17long shstk_prctl(struct task_struct *task, int option, unsigned long arg2); 18void reset_thread_features(void); 19unsigned long shstk_alloc_thread_stack(struct task_struct *p, u64 clone_flags, 20 unsigned long stack_size); 21void shstk_free(struct task_struct *p); 22int setup_signal_shadow_stack(struct ksignal *ksig); 23int restore_signal_shadow_stack(void); 24int shstk_update_last_frame(unsigned long val); 25bool shstk_is_enabled(void); 26int shstk_pop(u64 *val); 27int shstk_push(u64 val); 28#else 29static inline long shstk_prctl(struct task_struct *task, int option, 30 unsigned long arg2) { return -EINVAL; } 31static inline void reset_thread_features(void) {} 32static inline unsigned long shstk_alloc_thread_stack(struct task_struct *p, 33 u64 clone_flags, 34 unsigned long stack_size) { return 0; } 35static inline void shstk_free(struct task_struct *p) {} 36static inline int setup_signal_shadow_stack(struct ksignal *ksig) { return 0; } 37static inline int restore_signal_shadow_stack(void) { return 0; } 38static inline int shstk_update_last_frame(unsigned long val) { return 0; } 39static inline bool shstk_is_enabled(void) { return false; } 40static inline int shstk_pop(u64 *val) { return -ENOTSUPP; } 41static inline int shstk_push(u64 val) { return -ENOTSUPP; } 42#endif /* CONFIG_X86_USER_SHADOW_STACK */ 43 44#endif /* __ASSEMBLER__ */ 45 46#endif /* _ASM_X86_SHSTK_H */
~/
Read-only file preview.