aboutsummaryrefslogtreecommitdiffstats
path: root/fs/binfmt_elf.c
diff options
context:
space:
mode:
authorJosh Triplett <josh@joshtriplett.org>2014-04-03 17:48:27 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-03 19:21:05 -0400
commit69369a7003735d0d8ef22097e27a55a8bad9557a (patch)
treeb7638899a8e81fc18a497791685f1b571d733896 /fs/binfmt_elf.c
parent8f6c5ffc8987f4f5b5a3e9d557d94bbf3a9bf216 (diff)
fs, kernel: permit disabling the uselib syscall
uselib hasn't been used since libc5; glibc does not use it. Support turning it off. When disabled, also omit the load_elf_library implementation from binfmt_elf.c, which only uselib invokes. bloat-o-meter: add/remove: 0/4 grow/shrink: 0/1 up/down: 0/-785 (-785) function old new delta padzero 39 36 -3 uselib_flags 20 - -20 sys_uselib 168 - -168 SyS_uselib 168 - -168 load_elf_library 426 - -426 The new CONFIG_USELIB defaults to `y'. Signed-off-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/binfmt_elf.c')
-rw-r--r--fs/binfmt_elf.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 67be2951b98a..0f59799fa105 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -46,10 +46,15 @@
46#endif 46#endif
47 47
48static int load_elf_binary(struct linux_binprm *bprm); 48static int load_elf_binary(struct linux_binprm *bprm);
49static int load_elf_library(struct file *);
50static unsigned long elf_map(struct file *, unsigned long, struct elf_phdr *, 49static unsigned long elf_map(struct file *, unsigned long, struct elf_phdr *,
51 int, int, unsigned long); 50 int, int, unsigned long);
52 51
52#ifdef CONFIG_USELIB
53static int load_elf_library(struct file *);
54#else
55#define load_elf_library NULL
56#endif
57
53/* 58/*
54 * If we don't support core dumping, then supply a NULL so we 59 * If we don't support core dumping, then supply a NULL so we
55 * don't even try. 60 * don't even try.
@@ -1005,6 +1010,7 @@ out_free_ph:
1005 goto out; 1010 goto out;
1006} 1011}
1007 1012
1013#ifdef CONFIG_USELIB
1008/* This is really simpleminded and specialized - we are loading an 1014/* This is really simpleminded and specialized - we are loading an
1009 a.out library that is given an ELF header. */ 1015 a.out library that is given an ELF header. */
1010static int load_elf_library(struct file *file) 1016static int load_elf_library(struct file *file)
@@ -1083,6 +1089,7 @@ out_free_ph:
1083out: 1089out:
1084 return error; 1090 return error;
1085} 1091}
1092#endif /* #ifdef CONFIG_USELIB */
1086 1093
1087#ifdef CONFIG_ELF_CORE 1094#ifdef CONFIG_ELF_CORE
1088/* 1095/*