12f78c73fSMao Han /* SPDX-License-Identifier: GPL-2.0 */ 22f78c73fSMao Han #ifndef _ASM_STACKPROTECTOR_H 32f78c73fSMao Han #define _ASM_STACKPROTECTOR_H 1 42f78c73fSMao Han 52f78c73fSMao Han extern unsigned long __stack_chk_guard; 62f78c73fSMao Han 72f78c73fSMao Han /* 82f78c73fSMao Han * Initialize the stackprotector canary value. 92f78c73fSMao Han * 102f78c73fSMao Han * NOTE: this must only be called from functions that never return, 112f78c73fSMao Han * and it must always be inlined. 122f78c73fSMao Han */ boot_init_stack_canary(void)132f78c73fSMao Hanstatic __always_inline void boot_init_stack_canary(void) 142f78c73fSMao Han { 15*622754e8SJason A. Donenfeld unsigned long canary = get_random_canary(); 162f78c73fSMao Han 172f78c73fSMao Han current->stack_canary = canary; 182f78c73fSMao Han __stack_chk_guard = current->stack_canary; 192f78c73fSMao Han } 202f78c73fSMao Han 212f78c73fSMao Han #endif /* __ASM_SH_STACKPROTECTOR_H */ 22