lkml.org 
[lkml]   [2004]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: serious performance regression due to NX patch

    On Sun, 11 Jul 2004, Jakub Jelinek wrote:

    > > --- linux/fs/binfmt_elf.c.orig3
    > > +++ linux/fs/binfmt_elf.c
    > > @@ -627,8 +627,14 @@ static int load_elf_binary(struct linux_
    > > executable_stack = EXSTACK_DISABLE_X;
    > > break;
    > > }
    > > +#ifdef __i386_
    > > + /*
    > > + * Legacy x86 binaries have an expectation of executability for
    > > + * virtually all their address-space - turn executability on:
    > > + */
    > > if (i == elf_ex.e_phnum)
    > > def_flags |= VM_EXEC | VM_MAYEXEC;
    > > +#endif
    >
    > This looks incorrect. There are many arches where legacy binaries expect
    > the executability for virtually all their address-space (my guess is all
    > but x86-64 and ia64), and even on those two legacy binaries expected at
    > least stack executable.

    so ... this should be #ifndef ia64?

    to all the purists: this cannot be done via VM_DATA_DEFAULT_FLAGS, because
    some architectures enforce the X bit, some dont. In fact only ia64 seems
    to enforce it reliably for all binaries.

    the #ifdef could be made an arch inline or define. But it's really
    academic as only ia64 seems to have this problem. So i'd suggest the patch
    below.

    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 __ia64__
    + /*
    + * Legacy binaries (except ia64) have an expectation of executability
    + * for virtually all their address-space - turn executability on:
    + */
    if (i == elf_ex.e_phnum)
    def_flags |= VM_EXEC | VM_MAYEXEC;
    +#endif

    /* Some simple consistency checks for the interpreter */
    if (elf_interpreter) {
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 14:04    [W:0.028 / U:0.180 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site