1*50910acdSKevin Brodsky // SPDX-License-Identifier: GPL-2.0-only 2*50910acdSKevin Brodsky #include <sys/syscall.h> 3*50910acdSKevin Brodsky #include <unistd.h> 4*50910acdSKevin Brodsky 5*50910acdSKevin Brodsky #include "pkey-helpers.h" 6*50910acdSKevin Brodsky 7*50910acdSKevin Brodsky int sys_pkey_alloc(unsigned long flags, unsigned long init_val) 8*50910acdSKevin Brodsky { 9*50910acdSKevin Brodsky int ret = syscall(SYS_pkey_alloc, flags, init_val); 10*50910acdSKevin Brodsky dprintf1("%s(flags=%lx, init_val=%lx) syscall ret: %d errno: %d\n", 11*50910acdSKevin Brodsky __func__, flags, init_val, ret, errno); 12*50910acdSKevin Brodsky return ret; 13*50910acdSKevin Brodsky } 14*50910acdSKevin Brodsky 15*50910acdSKevin Brodsky int sys_pkey_free(unsigned long pkey) 16*50910acdSKevin Brodsky { 17*50910acdSKevin Brodsky int ret = syscall(SYS_pkey_free, pkey); 18*50910acdSKevin Brodsky dprintf1("%s(pkey=%ld) syscall ret: %d\n", __func__, pkey, ret); 19*50910acdSKevin Brodsky return ret; 20*50910acdSKevin Brodsky } 21*50910acdSKevin Brodsky 22*50910acdSKevin Brodsky int sys_mprotect_pkey(void *ptr, size_t size, unsigned long orig_prot, 23*50910acdSKevin Brodsky unsigned long pkey) 24*50910acdSKevin Brodsky { 25*50910acdSKevin Brodsky int sret; 26*50910acdSKevin Brodsky 27*50910acdSKevin Brodsky dprintf2("%s(0x%p, %zx, prot=%lx, pkey=%lx)\n", __func__, 28*50910acdSKevin Brodsky ptr, size, orig_prot, pkey); 29*50910acdSKevin Brodsky 30*50910acdSKevin Brodsky errno = 0; 31*50910acdSKevin Brodsky sret = syscall(__NR_pkey_mprotect, ptr, size, orig_prot, pkey); 32*50910acdSKevin Brodsky if (errno) { 33*50910acdSKevin Brodsky dprintf2("SYS_mprotect_key sret: %d\n", sret); 34*50910acdSKevin Brodsky dprintf2("SYS_mprotect_key prot: 0x%lx\n", orig_prot); 35*50910acdSKevin Brodsky dprintf2("SYS_mprotect_key failed, errno: %d\n", errno); 36*50910acdSKevin Brodsky if (DEBUG_LEVEL >= 2) 37*50910acdSKevin Brodsky perror("SYS_mprotect_pkey"); 38*50910acdSKevin Brodsky } 39*50910acdSKevin Brodsky return sret; 40*50910acdSKevin Brodsky } 41