root/arch/powerpc/include/asm/stackprotector.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. boot_init_stack_canary

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * GCC stack protector support.
   4  *
   5  */
   6 
   7 #ifndef _ASM_STACKPROTECTOR_H
   8 #define _ASM_STACKPROTECTOR_H
   9 
  10 #include <linux/random.h>
  11 #include <linux/version.h>
  12 #include <asm/reg.h>
  13 #include <asm/current.h>
  14 #include <asm/paca.h>
  15 
  16 /*
  17  * Initialize the stackprotector canary value.
  18  *
  19  * NOTE: this must only be called from functions that never return,
  20  * and it must always be inlined.
  21  */
  22 static __always_inline void boot_init_stack_canary(void)
  23 {
  24         unsigned long canary;
  25 
  26         /* Try to get a semi random initial value. */
  27         canary = get_random_canary();
  28         canary ^= mftb();
  29         canary ^= LINUX_VERSION_CODE;
  30         canary &= CANARY_MASK;
  31 
  32         current->stack_canary = canary;
  33 #ifdef CONFIG_PPC64
  34         get_paca()->canary = canary;
  35 #endif
  36 }
  37 
  38 #endif  /* _ASM_STACKPROTECTOR_H */

/* [<][>][^][v][top][bottom][index][help] */