Subject: Re: issues w/init

From: Benjamin Herrenschmidt <[email-masked]>
Date: Fri, 17 Apr 2009 19:03:11 +0200

On Fri, 2009-04-17 at 08:23 -0500, Kumar Gala wrote:
> I can and might have already done this, need to double check.  But  
> what I was seeing from elf_map is that we don't get PROT_EXEC set for  
> this PHDR, but get VM_MAY_EXEC.  I'm not clear on what VM_MAY_EXEC is  
> intended for.

Looking at a 2.6.29 tree here, I don't see any reference to VM_MAY_EXEC
but I see a VM_MAYEXEC :-) Though it shouldn't be relevant here.

What I see, and what should be checked is:

 1- In binfmt_elf.c, what happens with this statement ?

        if (elf_read_implies_exec(loc->elf_ex, executable_stack))
                current->personality |= READ_IMPLIES_EXEC;

(ie. is the personality flag set ?)

 2- When the phdr's are mmap'ed, do you hit this:

        if ((prot & PROT_READ) && (current->personality & READ_IMPLIES_EXEC))
                if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC)))
                        prot |= PROT_EXEC;

(Which should later be turned into VM_EXEC by calc_vm_prot_bits().

If any of these isn't happening, then we need to figure out why.

Cheers,
Ben.