diff options
author | David S. Miller <davem@davemloft.net> | 2020-02-27 18:31:39 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-02-27 18:31:39 -0800 |
commit | 9f6e055907362f6692185c1c9658295d24095c74 (patch) | |
tree | a7dc22fa7481300c92c0a33b54a32cb9ee551b5f /arch/csky/include/asm/stackprotector.h | |
parent | ec4a514a6870ee3a83fb8788635cf871ee32e665 (diff) | |
parent | 7058b837899fc978c9f8a033fa29ab07360a85c8 (diff) | |
download | linux-9f6e055907362f6692185c1c9658295d24095c74.tar.gz linux-9f6e055907362f6692185c1c9658295d24095c74.tar.bz2 linux-9f6e055907362f6692185c1c9658295d24095c74.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
The mptcp conflict was overlapping additions.
The SMC conflict was an additional and removal happening at the same
time.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/csky/include/asm/stackprotector.h')
-rw-r--r-- | arch/csky/include/asm/stackprotector.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/arch/csky/include/asm/stackprotector.h b/arch/csky/include/asm/stackprotector.h new file mode 100644 index 000000000000..d7cd4e51edd9 --- /dev/null +++ b/arch/csky/include/asm/stackprotector.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#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; + canary &= CANARY_MASK; + + current->stack_canary = canary; + __stack_chk_guard = current->stack_canary; +} + +#endif /* __ASM_SH_STACKPROTECTOR_H */ |