Contributors: 17
Author Tokens Token Proportion Commits Commit Proportion
Rick Edgecombe 148 51.93% 5 20.83%
Peter Zijlstra 41 14.39% 1 4.17%
Andi Kleen 35 12.28% 1 4.17%
Jiri Olsa 26 9.12% 2 8.33%
Kirill A. Shutemov 6 2.11% 1 4.17%
Borislav Petkov 4 1.40% 1 4.17%
Al Viro 4 1.40% 1 4.17%
Brian Gerst 3 1.05% 1 4.17%
Kyle Huey 3 1.05% 2 8.33%
Linus Torvalds (pre-git) 3 1.05% 2 8.33%
Corey Minyard 2 0.70% 1 4.17%
Glauber de Oliveira Costa 2 0.70% 1 4.17%
Unknown 2 0.70% 1 4.17%
David Howells 2 0.70% 1 4.17%
Thomas Huth 2 0.70% 1 4.17%
Greg Kroah-Hartman 1 0.35% 1 4.17%
Suresh B. Siddha 1 0.35% 1 4.17%
Total 285 24


/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_X86_SHSTK_H
#define _ASM_X86_SHSTK_H

#ifndef __ASSEMBLER__
#include <linux/types.h>

struct task_struct;
struct ksignal;

#ifdef CONFIG_X86_USER_SHADOW_STACK
struct thread_shstk {
	u64	base;
	u64	size;
};

long shstk_prctl(struct task_struct *task, int option, unsigned long arg2);
void reset_thread_features(void);
unsigned long shstk_alloc_thread_stack(struct task_struct *p, u64 clone_flags,
				       unsigned long stack_size);
void shstk_free(struct task_struct *p);
int setup_signal_shadow_stack(struct ksignal *ksig);
int restore_signal_shadow_stack(void);
int shstk_update_last_frame(unsigned long val);
bool shstk_is_enabled(void);
int shstk_pop(u64 *val);
int shstk_push(u64 val);
#else
static inline long shstk_prctl(struct task_struct *task, int option,
			       unsigned long arg2) { return -EINVAL; }
static inline void reset_thread_features(void) {}
static inline unsigned long shstk_alloc_thread_stack(struct task_struct *p,
						     u64 clone_flags,
						     unsigned long stack_size) { return 0; }
static inline void shstk_free(struct task_struct *p) {}
static inline int setup_signal_shadow_stack(struct ksignal *ksig) { return 0; }
static inline int restore_signal_shadow_stack(void) { return 0; }
static inline int shstk_update_last_frame(unsigned long val) { return 0; }
static inline bool shstk_is_enabled(void) { return false; }
static inline int shstk_pop(u64 *val) { return -ENOTSUPP; }
static inline int shstk_push(u64 val) { return -ENOTSUPP; }
#endif /* CONFIG_X86_USER_SHADOW_STACK */

#endif /* __ASSEMBLER__ */

#endif /* _ASM_X86_SHSTK_H */