cregit-Linux how code gets into the kernel

Release 4.14 arch/x86/include/asm/smap.h

/*
 * Supervisor Mode Access Prevention support
 *
 * Copyright (C) 2012 Intel Corporation
 * Author: H. Peter Anvin <hpa@linux.intel.com>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; version 2
 * of the License.
 */

#ifndef _ASM_X86_SMAP_H

#define _ASM_X86_SMAP_H

#include <linux/stringify.h>
#include <asm/nops.h>
#include <asm/cpufeatures.h>

/* "Raw" instruction opcodes */

#define __ASM_CLAC	.byte 0x0f,0x01,0xca

#define __ASM_STAC	.byte 0x0f,0x01,0xcb

#ifdef __ASSEMBLY__

#include <asm/alternative-asm.h>

#ifdef CONFIG_X86_SMAP


#define ASM_CLAC \
	ALTERNATIVE "", __stringify(__ASM_CLAC), X86_FEATURE_SMAP


#define ASM_STAC \
	ALTERNATIVE "", __stringify(__ASM_STAC), X86_FEATURE_SMAP

#else /* CONFIG_X86_SMAP */


#define ASM_CLAC

#define ASM_STAC

#endif /* CONFIG_X86_SMAP */

#else /* __ASSEMBLY__ */

#include <asm/alternative.h>

#ifdef CONFIG_X86_SMAP


static __always_inline void clac(void) { /* Note: a barrier is implicit in alternative() */ alternative("", __stringify(__ASM_CLAC), X86_FEATURE_SMAP); }

Contributors

PersonTokensPropCommitsCommitProp
H. Peter Anvin2195.45%266.67%
Borislav Petkov14.55%133.33%
Total22100.00%3100.00%


static __always_inline void stac(void) { /* Note: a barrier is implicit in alternative() */ alternative("", __stringify(__ASM_STAC), X86_FEATURE_SMAP); }

Contributors

PersonTokensPropCommitsCommitProp
H. Peter Anvin2195.45%266.67%
Borislav Petkov14.55%133.33%
Total22100.00%3100.00%

/* These macros can be used in asm() statements */ #define ASM_CLAC \ ALTERNATIVE("", __stringify(__ASM_CLAC), X86_FEATURE_SMAP) #define ASM_STAC \ ALTERNATIVE("", __stringify(__ASM_STAC), X86_FEATURE_SMAP) #else /* CONFIG_X86_SMAP */
static inline void clac(void) { }

Contributors

PersonTokensPropCommitsCommitProp
H. Peter Anvin8100.00%1100.00%
Total8100.00%1100.00%


static inline void stac(void) { }

Contributors

PersonTokensPropCommitsCommitProp
H. Peter Anvin8100.00%1100.00%
Total8100.00%1100.00%

#define ASM_CLAC #define ASM_STAC #endif /* CONFIG_X86_SMAP */ #endif /* __ASSEMBLY__ */ #endif /* _ASM_X86_SMAP_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
H. Peter Anvin14795.45%250.00%
Borislav Petkov74.55%250.00%
Total154100.00%4100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.