1*d30c1683SDeepak Gupta /* SPDX-License-Identifier: GPL-2.0-only */ 2*d30c1683SDeepak Gupta 3*d30c1683SDeepak Gupta #ifndef SELFTEST_SHADOWSTACK_TEST_H 4*d30c1683SDeepak Gupta #define SELFTEST_SHADOWSTACK_TEST_H 5*d30c1683SDeepak Gupta #include <stddef.h> 6*d30c1683SDeepak Gupta #include <linux/prctl.h> 7*d30c1683SDeepak Gupta 8*d30c1683SDeepak Gupta /* 9*d30c1683SDeepak Gupta * A CFI test returns true for success or false for fail. 10*d30c1683SDeepak Gupta * Takes a test number to index into array, and a void pointer. 11*d30c1683SDeepak Gupta */ 12*d30c1683SDeepak Gupta typedef bool (*shstk_test_func)(unsigned long test_num, void *); 13*d30c1683SDeepak Gupta 14*d30c1683SDeepak Gupta struct shadow_stack_tests { 15*d30c1683SDeepak Gupta char *name; 16*d30c1683SDeepak Gupta shstk_test_func t_func; 17*d30c1683SDeepak Gupta }; 18*d30c1683SDeepak Gupta 19*d30c1683SDeepak Gupta bool shadow_stack_fork_test(unsigned long test_num, void *ctx); 20*d30c1683SDeepak Gupta bool shadow_stack_map_test(unsigned long test_num, void *ctx); 21*d30c1683SDeepak Gupta bool shadow_stack_protection_test(unsigned long test_num, void *ctx); 22*d30c1683SDeepak Gupta bool shadow_stack_gup_tests(unsigned long test_num, void *ctx); 23*d30c1683SDeepak Gupta bool shadow_stack_signal_test(unsigned long test_num, void *ctx); 24*d30c1683SDeepak Gupta 25*d30c1683SDeepak Gupta int execute_shadow_stack_tests(void); 26*d30c1683SDeepak Gupta 27*d30c1683SDeepak Gupta #endif 28