Re: ppc64 sbrk returns executable heap in 32-bit emulation mode
From: Andreas Schwab <hidden>
Date: 2016-05-16 08:59:05
Alan Modra [off-list ref] writes:
On Thu, May 12, 2016 at 03:41:09PM +0200, Florian Weimer wrote:quoted
We noticed that on ppc64, the sbrk system call in the 32-bit subsystem returns executable memory. I assume it is related to this, in arch/powerpc/include/asm/page.h: /* * Unfortunately the PLT is in the BSS in the PPC32 ELF ABI, * and needs to be executable. This means the whole heap ends * up being executable. */ #define VM_DATA_DEFAULT_FLAGS32 (VM_READ | VM_WRITE | VM_EXEC | \ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) What is the rationale for this? This comment must be *really* old,I think the comment is just plain wrong. ppc32 needs an executable stack because it builds trampolines on the stack to support calling nested functions. I presume that's why the heap is executable.
The stack and the heap are separate mappings.
(If I'm wrong about heap+stack needing the same protection then I can't think of any reason to require an executable heap.)
The heap and the BSS initially share the same page. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different."