mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-26 04:31:03 +00:00
misc: Enable internal use of memory protection keys
This adds the necessary hidden prototypes.
This commit is contained in:
parent
3ef26b7087
commit
7e21a65c58
16
sysdeps/unix/sysv/linux/include/bits/mman-shared.h
Normal file
16
sysdeps/unix/sysv/linux/include/bits/mman-shared.h
Normal file
@ -0,0 +1,16 @@
|
||||
#include <sysdeps/unix/sysv/linux/bits/mman-shared.h>
|
||||
|
||||
#ifndef _ISOMAC
|
||||
|
||||
extern __typeof (pkey_alloc) __pkey_alloc;
|
||||
libc_hidden_proto (__pkey_alloc)
|
||||
extern __typeof (pkey_free) __pkey_free;
|
||||
libc_hidden_proto (__pkey_free)
|
||||
extern __typeof (pkey_mprotect) __pkey_mprotect;
|
||||
libc_hidden_proto (__pkey_mprotect)
|
||||
extern __typeof (pkey_get) __pkey_get;
|
||||
libc_hidden_proto (__pkey_get)
|
||||
extern __typeof (pkey_set) __pkey_set;
|
||||
libc_hidden_proto (__pkey_set)
|
||||
|
||||
#endif
|
@ -17,10 +17,13 @@
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
int
|
||||
pkey_get (int key)
|
||||
__pkey_get (int key)
|
||||
{
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
libc_hidden_def (__pkey_get)
|
||||
weak_alias (__pkey_get, pkey_get)
|
||||
|
@ -22,7 +22,7 @@
|
||||
#include <sysdep.h>
|
||||
|
||||
int
|
||||
pkey_mprotect (void *addr, size_t len, int prot, int pkey)
|
||||
__pkey_mprotect (void *addr, size_t len, int prot, int pkey)
|
||||
{
|
||||
if (pkey == -1)
|
||||
/* If the key is -1, the system call is precisely equivalent to
|
||||
@ -30,3 +30,5 @@ pkey_mprotect (void *addr, size_t len, int prot, int pkey)
|
||||
return __mprotect (addr, len, prot);
|
||||
return INLINE_SYSCALL_CALL (pkey_mprotect, addr, len, prot, pkey);
|
||||
}
|
||||
libc_hidden_def (__pkey_mprotect)
|
||||
weak_alias (__pkey_mprotect, pkey_mprotect)
|
||||
|
@ -17,10 +17,13 @@
|
||||
<https://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
int
|
||||
pkey_set (int key, unsigned int access_rights)
|
||||
__pkey_set (int key, unsigned int access_rights)
|
||||
{
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
libc_hidden_def (__pkey_set)
|
||||
weak_alias (__pkey_set, pkey_set)
|
||||
|
@ -21,7 +21,7 @@
|
||||
#include <sys/mman.h>
|
||||
|
||||
int
|
||||
pkey_get (int key)
|
||||
__pkey_get (int key)
|
||||
{
|
||||
if (key < 0 || key > PKEY_MAX)
|
||||
{
|
||||
@ -40,3 +40,5 @@ pkey_get (int key)
|
||||
return PKEY_DISABLE_WRITE;
|
||||
return 0;
|
||||
}
|
||||
libc_hidden_def (__pkey_get)
|
||||
weak_alias (__pkey_get, pkey_get)
|
||||
|
@ -21,7 +21,7 @@
|
||||
#include <sys/mman.h>
|
||||
|
||||
int
|
||||
pkey_set (int key, unsigned int rights)
|
||||
__pkey_set (int key, unsigned int rights)
|
||||
{
|
||||
if (key < 0 || key > PKEY_MAX || rights > 3)
|
||||
{
|
||||
@ -46,3 +46,5 @@ pkey_set (int key, unsigned int rights)
|
||||
pkey_write (amr);
|
||||
return 0;
|
||||
}
|
||||
libc_hidden_def (__pkey_set)
|
||||
weak_alias (__pkey_set, pkey_set)
|
||||
|
@ -102,8 +102,8 @@ name_to_handle_at EXTRA name_to_handle_at i:isppi name_to_handle_at
|
||||
setns EXTRA setns i:ii setns
|
||||
|
||||
memfd_create EXTRA memfd_create i:si memfd_create
|
||||
pkey_alloc EXTRA pkey_alloc i:ii pkey_alloc
|
||||
pkey_free EXTRA pkey_free i:i pkey_free
|
||||
pkey_alloc EXTRA pkey_alloc i:ii __pkey_alloc pkey_alloc
|
||||
pkey_free EXTRA pkey_free i:i __pkey_free pkey_free
|
||||
gettid EXTRA gettid Ei: __gettid gettid
|
||||
tgkill EXTRA tgkill i:iii __tgkill tgkill
|
||||
close_range - close_range i:iii __close_range close_range
|
||||
|
@ -18,9 +18,10 @@
|
||||
|
||||
#include <arch-pkey.h>
|
||||
#include <errno.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
int
|
||||
pkey_get (int key)
|
||||
__pkey_get (int key)
|
||||
{
|
||||
if (key < 0 || key > 15)
|
||||
{
|
||||
@ -31,3 +32,5 @@ pkey_get (int key)
|
||||
return (pkru >> (2 * key)) & 3;
|
||||
return 0;
|
||||
}
|
||||
libc_hidden_def (__pkey_get)
|
||||
weak_alias (__pkey_get, pkey_get)
|
||||
|
@ -18,9 +18,10 @@
|
||||
|
||||
#include <arch-pkey.h>
|
||||
#include <errno.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
int
|
||||
pkey_set (int key, unsigned int rights)
|
||||
__pkey_set (int key, unsigned int rights)
|
||||
{
|
||||
if (key < 0 || key > 15 || rights > 3)
|
||||
{
|
||||
@ -33,3 +34,5 @@ pkey_set (int key, unsigned int rights)
|
||||
pkey_write (pkru);
|
||||
return 0;
|
||||
}
|
||||
libc_hidden_def (__pkey_set)
|
||||
weak_alias (__pkey_set, pkey_set)
|
||||
|
Loading…
Reference in New Issue
Block a user