diff options
author | Thomas Weißschuh <linux@weissschuh.net> | 2023-05-26 09:51:19 +0200 |
---|---|---|
committer | Paul E. McKenney <paulmck@kernel.org> | 2023-06-09 11:46:09 -0700 |
commit | 208aa9d94c1181d8dff8e60d681e3b6cf0b37fae (patch) | |
tree | f2636c8d5bb6c0007216a6056ac1dcdaad5f4644 /tools/include | |
parent | 79d8d4cad2252dd69076cc7997e56459baf523b1 (diff) | |
download | linux-stable-208aa9d94c1181d8dff8e60d681e3b6cf0b37fae.tar.gz linux-stable-208aa9d94c1181d8dff8e60d681e3b6cf0b37fae.tar.bz2 linux-stable-208aa9d94c1181d8dff8e60d681e3b6cf0b37fae.zip |
tools/nolibc: add support for prctl()
It will be used to disable core dumps from the child spawned to validate
the stack protector functionality.
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Signed-off-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'tools/include')
-rw-r--r-- | tools/include/nolibc/sys.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h index d5792a5de70b..c688b410f9e4 100644 --- a/tools/include/nolibc/sys.h +++ b/tools/include/nolibc/sys.h @@ -22,6 +22,7 @@ #include <linux/fcntl.h> /* for O_* and AT_* */ #include <linux/stat.h> /* for statx() */ #include <linux/reboot.h> /* for LINUX_REBOOT_* */ +#include <linux/prctl.h> #include "arch.h" #include "errno.h" @@ -876,6 +877,32 @@ int open(const char *path, int flags, ...) /* + * int prctl(int option, unsigned long arg2, unsigned long arg3, + * unsigned long arg4, unsigned long arg5); + */ + +static __attribute__((unused)) +int sys_prctl(int option, unsigned long arg2, unsigned long arg3, + unsigned long arg4, unsigned long arg5) +{ + return my_syscall5(__NR_prctl, option, arg2, arg3, arg4, arg5); +} + +static __attribute__((unused)) +int prctl(int option, unsigned long arg2, unsigned long arg3, + unsigned long arg4, unsigned long arg5) +{ + int ret = sys_prctl(option, arg2, arg3, arg4, arg5); + + if (ret < 0) { + SET_ERRNO(-ret); + ret = -1; + } + return ret; +} + + +/* * int pivot_root(const char *new, const char *old); */ |