diff options
author | Josh Triplett <josh@joshtriplett.org> | 2014-04-03 17:48:27 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-03 19:21:05 -0400 |
commit | 69369a7003735d0d8ef22097e27a55a8bad9557a (patch) | |
tree | b7638899a8e81fc18a497791685f1b571d733896 /fs/binfmt_elf.c | |
parent | 8f6c5ffc8987f4f5b5a3e9d557d94bbf3a9bf216 (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.c | 9 |
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 | ||
48 | static int load_elf_binary(struct linux_binprm *bprm); | 48 | static int load_elf_binary(struct linux_binprm *bprm); |
49 | static int load_elf_library(struct file *); | ||
50 | static unsigned long elf_map(struct file *, unsigned long, struct elf_phdr *, | 49 | static 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 | ||
53 | static 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. */ |
1010 | static int load_elf_library(struct file *file) | 1016 | static int load_elf_library(struct file *file) |
@@ -1083,6 +1089,7 @@ out_free_ph: | |||
1083 | out: | 1089 | out: |
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 | /* |