From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757504AbYGJUUi (ORCPT ); Thu, 10 Jul 2008 16:20:38 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752773AbYGJUUa (ORCPT ); Thu, 10 Jul 2008 16:20:30 -0400 Received: from extu-mxob-1.symantec.com ([216.10.194.28]:35392 "EHLO extu-mxob-1.symantec.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750952AbYGJUU3 (ORCPT ); Thu, 10 Jul 2008 16:20:29 -0400 Date: Thu, 10 Jul 2008 21:19:20 +0100 (BST) From: Hugh Dickins X-X-Sender: hugh@blonde.site To: Linus Torvalds cc: Andrew Morton , Ollie Wild , bugme-daemon@bugzilla.kernel.org, Ingo Molnar , Roland McGrath , Peter Zijlstra , pageexec@freemail.hu, stable@kernel.org, linux-kernel@vger.kernel.org Subject: [Bug 11063][PATCH] exec: fix stack excutability without PT_GNU_STACK In-Reply-To: <20080709152716.99e9bbe7.akpm@linux-foundation.org> Message-ID: References: <20080709152716.99e9bbe7.akpm@linux-foundation.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Kernel Bugzilla #11063 points out that on some architectures (e.g. x86_32) exec'ing an ELF without a PT_GNU_STACK program header should default to an executable stack; but this got broken by the unlimited argv feature because stack vma is now created before the right personality has been established: so breaking old binaries using nested function trampolines. Therefore re-evaluate VM_STACK_FLAGS in setup_arg_pages, where stack vm_flags used to be set, before the mprotect_fixup. Checking through our existing VM_flags, none would have changed since insert_vm_struct: so this seems safer than finding a way through the personality labyrinth. Reported-by: pageexec@freemail.hu Signed-off-by: Hugh Dickins Cc: stable@kernel.org --- fs/exec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- 2.6.26-rc9/fs/exec.c 2008-06-21 08:41:19.000000000 +0100 +++ linux/fs/exec.c 2008-07-10 20:02:25.000000000 +0100 @@ -610,7 +610,7 @@ int setup_arg_pages(struct linux_binprm bprm->exec -= stack_shift; down_write(&mm->mmap_sem); - vm_flags = vma->vm_flags; + vm_flags = VM_STACK_FLAGS; /* * Adjust stack execute permissions; explicitly enable for