-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Basic plumbing to initialize the pkey system. Nothing is enabled yet. A later patch will enable it once all the infrastructure is in place. Signed-off-by: Ram Pai <linuxram@us.ibm.com> [mpe: Rework copyrights to use SPDX tags] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
- Loading branch information
Ram Pai
authored and
Michael Ellerman
committed
Jan 20, 2018
1 parent
b1db551
commit 92e3da3
Showing
6 changed files
with
98 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
/* SPDX-License-Identifier: GPL-2.0+ */ | ||
/* | ||
* PowerPC Memory Protection Keys management | ||
* | ||
* Copyright 2017, Ram Pai, IBM Corporation. | ||
*/ | ||
|
||
#ifndef _ASM_POWERPC_KEYS_H | ||
#define _ASM_POWERPC_KEYS_H | ||
|
||
#include <linux/jump_label.h> | ||
|
||
DECLARE_STATIC_KEY_TRUE(pkey_disabled); | ||
#define ARCH_VM_PKEY_FLAGS 0 | ||
|
||
static inline bool mm_pkey_is_allocated(struct mm_struct *mm, int pkey) | ||
{ | ||
return false; | ||
} | ||
|
||
static inline int mm_pkey_alloc(struct mm_struct *mm) | ||
{ | ||
return -1; | ||
} | ||
|
||
static inline int mm_pkey_free(struct mm_struct *mm, int pkey) | ||
{ | ||
return -EINVAL; | ||
} | ||
|
||
/* | ||
* Try to dedicate one of the protection keys to be used as an | ||
* execute-only protection key. | ||
*/ | ||
static inline int execute_only_pkey(struct mm_struct *mm) | ||
{ | ||
return 0; | ||
} | ||
|
||
static inline int arch_override_mprotect_pkey(struct vm_area_struct *vma, | ||
int prot, int pkey) | ||
{ | ||
return 0; | ||
} | ||
|
||
static inline int arch_set_user_pkey_access(struct task_struct *tsk, int pkey, | ||
unsigned long init_val) | ||
{ | ||
return 0; | ||
} | ||
#endif /*_ASM_POWERPC_KEYS_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
// SPDX-License-Identifier: GPL-2.0+ | ||
/* | ||
* PowerPC Memory Protection Keys management | ||
* | ||
* Copyright 2017, Ram Pai, IBM Corporation. | ||
*/ | ||
|
||
#include <linux/pkeys.h> | ||
|
||
DEFINE_STATIC_KEY_TRUE(pkey_disabled); | ||
bool pkey_execute_disable_supported; | ||
|
||
int pkey_initialize(void) | ||
{ | ||
/* | ||
* Disable the pkey system till everything is in place. A subsequent | ||
* patch will enable it. | ||
*/ | ||
static_branch_enable(&pkey_disabled); | ||
|
||
/* | ||
* Disable execute_disable support for now. A subsequent patch will | ||
* enable it. | ||
*/ | ||
pkey_execute_disable_supported = false; | ||
return 0; | ||
} | ||
|
||
arch_initcall(pkey_initialize); |