[PATCH (sh-2.6) 2/2] arm: use generic implementation of boot_init_stack_canary

Nicolas Pitre nicolas.pitre at linaro.org
Tue Dec 7 13:29:42 EST 2010


On Tue, 7 Dec 2010, Filippo ARCIDIACONO wrote:

> All architectures using __stack_chk_guard global variable as canary
> could use a generic implementation of boot_init_stack_canary.
> 
> Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono at st.com>
> Reviewed-by: Carmelo Amoroso <carmelo.amoroso at st.com>

Acked-by: Nicolas Pitre <nicolas.pitre at linaro.org>

> ---
>  arch/arm/include/asm/stackprotector.h |   32 ++------------------------------
>  1 files changed, 2 insertions(+), 30 deletions(-)
> 
> diff --git a/arch/arm/include/asm/stackprotector.h b/arch/arm/include/asm/stackprotector.h
> index de00332..1ae30bc 100644
> --- a/arch/arm/include/asm/stackprotector.h
> +++ b/arch/arm/include/asm/stackprotector.h
> @@ -1,38 +1,10 @@
>  /*
> - * GCC stack protector support.
> - *
> - * Stack protector works by putting predefined pattern at the start of
> - * the stack frame and verifying that it hasn't been overwritten when
> - * returning from the function.  The pattern is called stack canary
> - * and gcc expects it to be defined by a global variable called
> - * "__stack_chk_guard" on ARM.  This unfortunately means that on SMP
> - * we cannot have a different canary value per task.
> + * ARM specific GCC stack protector support.
>   */
>  
>  #ifndef _ASM_STACKPROTECTOR_H
>  #define _ASM_STACKPROTECTOR_H 1
>  
> -#include <linux/random.h>
> -#include <linux/version.h>
> -
> -extern unsigned long __stack_chk_guard;
> -
> -/*
> - * Initialize the stackprotector canary value.
> - *
> - * NOTE: this must only be called from functions that never return,
> - * and it must always be inlined.
> - */
> -static __always_inline void boot_init_stack_canary(void)
> -{
> -	unsigned long canary;
> -
> -	/* Try to get a semi random initial value. */
> -	get_random_bytes(&canary, sizeof(canary));
> -	canary ^= LINUX_VERSION_CODE;
> -
> -	current->stack_canary = canary;
> -	__stack_chk_guard = current->stack_canary;
> -}
> +#include <asm-generic/stackprotector.h>
>  
>  #endif	/* _ASM_STACKPROTECTOR_H */
> -- 
> 1.5.5.6
> 



More information about the linux-arm-kernel mailing list