diff options
Diffstat (limited to 'fs/binfmt_elf_fdpic.c')
| -rw-r--r-- | fs/binfmt_elf_fdpic.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c index 76285471073e..38502c67987c 100644 --- a/fs/binfmt_elf_fdpic.c +++ b/fs/binfmt_elf_fdpic.c | |||
| @@ -283,20 +283,23 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm, | |||
| 283 | } | 283 | } |
| 284 | 284 | ||
| 285 | stack_size = exec_params.stack_size; | 285 | stack_size = exec_params.stack_size; |
| 286 | if (stack_size < interp_params.stack_size) | ||
| 287 | stack_size = interp_params.stack_size; | ||
| 288 | |||
| 289 | if (exec_params.flags & ELF_FDPIC_FLAG_EXEC_STACK) | 286 | if (exec_params.flags & ELF_FDPIC_FLAG_EXEC_STACK) |
| 290 | executable_stack = EXSTACK_ENABLE_X; | 287 | executable_stack = EXSTACK_ENABLE_X; |
| 291 | else if (exec_params.flags & ELF_FDPIC_FLAG_NOEXEC_STACK) | 288 | else if (exec_params.flags & ELF_FDPIC_FLAG_NOEXEC_STACK) |
| 292 | executable_stack = EXSTACK_DISABLE_X; | 289 | executable_stack = EXSTACK_DISABLE_X; |
| 293 | else if (interp_params.flags & ELF_FDPIC_FLAG_EXEC_STACK) | ||
| 294 | executable_stack = EXSTACK_ENABLE_X; | ||
| 295 | else if (interp_params.flags & ELF_FDPIC_FLAG_NOEXEC_STACK) | ||
| 296 | executable_stack = EXSTACK_DISABLE_X; | ||
| 297 | else | 290 | else |
| 298 | executable_stack = EXSTACK_DEFAULT; | 291 | executable_stack = EXSTACK_DEFAULT; |
| 299 | 292 | ||
| 293 | if (stack_size == 0) { | ||
| 294 | stack_size = interp_params.stack_size; | ||
| 295 | if (interp_params.flags & ELF_FDPIC_FLAG_EXEC_STACK) | ||
| 296 | executable_stack = EXSTACK_ENABLE_X; | ||
| 297 | else if (interp_params.flags & ELF_FDPIC_FLAG_NOEXEC_STACK) | ||
| 298 | executable_stack = EXSTACK_DISABLE_X; | ||
| 299 | else | ||
| 300 | executable_stack = EXSTACK_DEFAULT; | ||
| 301 | } | ||
| 302 | |||
| 300 | retval = -ENOEXEC; | 303 | retval = -ENOEXEC; |
| 301 | if (stack_size == 0) | 304 | if (stack_size == 0) |
| 302 | goto error; | 305 | goto error; |
