From 5d1d8bb4fc758820c1a7f12459ea306aa36a3829 Mon Sep 17 00:00:00 2001 From: David Howells Date: Wed, 23 Sep 2009 15:57:06 -0700 Subject: [PATCH] --- yaml --- r: 165691 b: refs/heads/master c: 8e8b63a68c7ec95ef23770813120f4f98c76e08b h: refs/heads/master i: 165689: 99fd403ac295d1404f114d542d1bcf6dd31cd880 165687: 72d0aa9066217b5d27318c2424cbd470ca604cea v: v3 --- [refs] | 2 +- trunk/fs/binfmt_elf_fdpic.c | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index cec9fcc4e047..a016ae1dc6e6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0cf062d0ffa33d491e2695b0d298ccf9cbb58d3d +refs/heads/master: 8e8b63a68c7ec95ef23770813120f4f98c76e08b diff --git a/trunk/fs/binfmt_elf_fdpic.c b/trunk/fs/binfmt_elf_fdpic.c index 76285471073e..38502c67987c 100644 --- a/trunk/fs/binfmt_elf_fdpic.c +++ b/trunk/fs/binfmt_elf_fdpic.c @@ -283,20 +283,23 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm, } stack_size = exec_params.stack_size; - if (stack_size < interp_params.stack_size) - stack_size = interp_params.stack_size; - if (exec_params.flags & ELF_FDPIC_FLAG_EXEC_STACK) executable_stack = EXSTACK_ENABLE_X; else if (exec_params.flags & ELF_FDPIC_FLAG_NOEXEC_STACK) executable_stack = EXSTACK_DISABLE_X; - else if (interp_params.flags & ELF_FDPIC_FLAG_EXEC_STACK) - executable_stack = EXSTACK_ENABLE_X; - else if (interp_params.flags & ELF_FDPIC_FLAG_NOEXEC_STACK) - executable_stack = EXSTACK_DISABLE_X; else executable_stack = EXSTACK_DEFAULT; + if (stack_size == 0) { + stack_size = interp_params.stack_size; + if (interp_params.flags & ELF_FDPIC_FLAG_EXEC_STACK) + executable_stack = EXSTACK_ENABLE_X; + else if (interp_params.flags & ELF_FDPIC_FLAG_NOEXEC_STACK) + executable_stack = EXSTACK_DISABLE_X; + else + executable_stack = EXSTACK_DEFAULT; + } + retval = -ENOEXEC; if (stack_size == 0) goto error;