From: Stephen Kitt Date: Sat, 8 Jan 2022 15:43:03 +0000 (+0100) Subject: pkeys.7: Rely on the glibc implementations X-Git-Tag: man-pages-5.19-rc1~799 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3f311b381d2bbcbf8b067280cd503bf3f7eedb61;p=thirdparty%2Fman-pages.git pkeys.7: Rely on the glibc implementations glibc 2.27 added implementations of pkey_set(), pkey_mprotect(), pkey_alloc(), and pkey_free(); rely on those instead of defining them in the example. wrpkru() is only used in pkey_set() and can be removed too (it's the internal-use-only pkey_write() in glibc). Signed-off-by: Stephen Kitt Signed-off-by: Alejandro Colomar --- diff --git a/man7/pkeys.7 b/man7/pkeys.7 index 7c0d37a377..055e57ce32 100644 --- a/man7/pkeys.7 +++ b/man7/pkeys.7 @@ -184,48 +184,10 @@ Segmentation fault (core dumped) .EX #define _GNU_SOURCE #include -#include #include #include #include -static inline void -wrpkru(unsigned int pkru) -{ - unsigned int eax = pkru; - unsigned int ecx = 0; - unsigned int edx = 0; - - asm volatile(".byte 0x0f,0x01,0xef\en\et" - : : "a" (eax), "c" (ecx), "d" (edx)); -} - -int -pkey_set(int pkey, unsigned int rights) -{ - unsigned int pkru = (rights << (2 * pkey)); - wrpkru(pkru); - return 0; -} - -int -pkey_mprotect(void *ptr, size_t size, int orig_prot, int pkey) -{ - return syscall(SYS_pkey_mprotect, ptr, size, orig_prot, pkey); -} - -int -pkey_alloc(unsigned int flags, unsigned int rights) -{ - return syscall(SYS_pkey_alloc, flags, rights); -} - -int -pkey_free(int pkey) -{ - return syscall(SYS_pkey_free, pkey); -} - #define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \e } while (0)