Re: serious performance regression due to NX patch

Ingo Molnar
2004-07-13T03:58:06Z

On Mon, 12 Jul 2004, Linus Torvalds wrote:

> > so ... this should be #ifndef ia64?
>
> No. Make it a CONFIG_DEFAULT_NOEXEC and make the relevant architectures do
> a
>
> define_bool DEFAULT_NOEXEC y
>
> in their Kconfig files.
>
> In general, we should _never_ use an architecture-define. They just
> always end up becoming more and more hairy, and less and less obvious
> what they are all about.
>
> So instead, make a readable and explicit config define, and let each
> architecture just set it (or not) as they wish.

ok - patch below. ia64 can now define it - the default is that legacy
binaries have executability expectations.

Ingo

--- linux/fs/binfmt_elf.c.orig
+++ linux/fs/binfmt_elf.c
@@ -627,8 +627,14 @@ static int load_elf_binary(struct linux_
executable_stack = EXSTACK_DISABLE_X;
break;
}
+#ifndef CONFIG_DEFAULT_NOEXEC
+ /*
+ * Legacy binaries (unless the arch defaults to noexec) have an
+ * expectation of executability - turn it on:
+ */
if (i = elf_ex.e_phnum)
def_flags |= VM_EXEC | VM_MAYEXEC;
+#endif

/* Some simple consistency checks for the interpreter */
if (elf_interpreter) {