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 (705B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _ASM_STACKPROTECTOR_H
      3#define _ASM_STACKPROTECTOR_H 1
      4
      5#include <linux/random.h>
      6#include <linux/version.h>
      7
      8extern unsigned long __stack_chk_guard;
      9
     10/*
     11 * Initialize the stackprotector canary value.
     12 *
     13 * NOTE: this must only be called from functions that never return,
     14 * and it must always be inlined.
     15 */
     16static __always_inline void boot_init_stack_canary(void)
     17{
     18	unsigned long canary;
     19
     20	/* Try to get a semi random initial value. */
     21	get_random_bytes(&canary, sizeof(canary));
     22	canary ^= LINUX_VERSION_CODE;
     23	canary &= CANARY_MASK;
     24
     25	current->stack_canary = canary;
     26	__stack_chk_guard = current->stack_canary;
     27}
     28
     29#endif /* __ASM_SH_STACKPROTECTOR_H */