1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
25d920bb9SFilippo Arcidiacono #ifndef __ASM_SH_STACKPROTECTOR_H
35d920bb9SFilippo Arcidiacono #define __ASM_SH_STACKPROTECTOR_H
45d920bb9SFilippo Arcidiacono 
55d920bb9SFilippo Arcidiacono extern unsigned long __stack_chk_guard;
65d920bb9SFilippo Arcidiacono 
75d920bb9SFilippo Arcidiacono /*
85d920bb9SFilippo Arcidiacono  * Initialize the stackprotector canary value.
95d920bb9SFilippo Arcidiacono  *
105d920bb9SFilippo Arcidiacono  * NOTE: this must only be called from functions that never return,
115d920bb9SFilippo Arcidiacono  * and it must always be inlined.
125d920bb9SFilippo Arcidiacono  */
boot_init_stack_canary(void)135d920bb9SFilippo Arcidiacono static __always_inline void boot_init_stack_canary(void)
145d920bb9SFilippo Arcidiacono {
15*622754e8SJason A. Donenfeld 	unsigned long canary = get_random_canary();
165d920bb9SFilippo Arcidiacono 
175d920bb9SFilippo Arcidiacono 	current->stack_canary = canary;
185d920bb9SFilippo Arcidiacono 	__stack_chk_guard = current->stack_canary;
195d920bb9SFilippo Arcidiacono }
205d920bb9SFilippo Arcidiacono 
215d920bb9SFilippo Arcidiacono #endif /* __ASM_SH_STACKPROTECTOR_H */
22