cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

stackprotector.h (788B)


      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 */
     22static __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 */