[PATCH 2/2] kernel: Support compiling out the prctl syscall

Josh Triplett
2016-11-09T00:18:27Z

Some embedded systems can do without the prctl syscall, saving some
space.

This also avoids regular increases in tinyconfig size as people add more
non-optional functionality to prctl (observed via the 0-day kernel
infrastructure).

bloat-o-meter results:

add/remove: 0/3 grow/shrink: 0/1 up/down: 0/-2143 (-2143)
function old new delta
offsets 23 12 -11
prctl_set_auxv 97 - -97
sys_prctl 794 - -794
prctl_set_mm 1241 - -1241
Total: Before=1902583, After=1900440, chg -0.11%

Signed-off-by: Josh Triplett <josh@joshtriplett.org>
---
init/Kconfig | 12 ++++++++++++
kernel/Makefile | 3 ++-
kernel/sys_ni.c | 1 +
3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/init/Kconfig b/init/Kconfig
index 34407f1..1dd671c 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -1408,6 +1408,18 @@ config MULTIUSER

If unsure, say Y here.

+config PRCTL
+ bool "prctl syscall" if EXPERT
+ default y
+ help
+ This option enables the prctl syscall, used for a variety of
+ operations on the current process.
+
+ If building an embedded system where no applications or libraries use
+ prctl, you can disable this option to save space.
+
+ If unsure, say Y here.
+
config SGETMASK_SYSCALL
bool "sgetmask/ssetmask syscalls support" if EXPERT
def_bool PARISC || MN10300 || BLACKFIN || M68K || PPC || MIPS || X86 || SPARC || CRIS || MICROBLAZE || SUPERH
diff --git a/kernel/Makefile b/kernel/Makefile
index 37c6d4c..43fb4ca 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -9,9 +9,10 @@ obj-y = fork.o exec_domain.o panic.o \
extable.o params.o \
kthread.o sys_ni.o nsproxy.o \
notifier.o ksysfs.o cred.o reboot.o \
- async.o range.o smpboot.o ucount.o prctl.o
+ async.o range.o smpboot.o ucount.o

obj-$(CONFIG_MULTIUSER) += groups.o
+obj-$(CONFIG_PRCTL) += prctl.o

ifdef CONFIG_FUNCTION_TRACER
# Do not trace internal ftrace files
diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c
index 635482e..84fd646 100644
--- a/kernel/sys_ni.c
+++ b/kernel/sys_ni.c
@@ -175,6 +175,7 @@ cond_syscall(sys_setfsgid);
cond_syscall(sys_capget);
cond_syscall(sys_capset);
cond_syscall(sys_copy_file_range);
+cond_syscall(sys_prctl);

/* arch-specific weak syscall entries */
cond_syscall(sys_pciconfig_read);
--
git-series 0.8.11