diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2012-10-17 12:59:20 +0400 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2012-10-17 12:59:20 +0400 |
commit | 0b4f5b1d6385826093dc3cd9035b186f0d77a5dc (patch) | |
tree | e7602057216d3de837995b267a281ae09d899a26 /arch/tile/mm/elf.c | |
parent | 939ccba437da1726a5c8a5b702a47d473da927ae (diff) | |
parent | 9f0d3c2781baa1102108e16efbe640dd74564a7c (diff) | |
download | linux-0b4f5b1d6385826093dc3cd9035b186f0d77a5dc.tar.xz |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
To obtain new flag FLOWI_FLAG_KNOWN_NH to fix netfilter's xt_TEE target.
Diffstat (limited to 'arch/tile/mm/elf.c')
-rw-r--r-- | arch/tile/mm/elf.c | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/arch/tile/mm/elf.c b/arch/tile/mm/elf.c index 758b6038c2b7..3cfa98bf9125 100644 --- a/arch/tile/mm/elf.c +++ b/arch/tile/mm/elf.c @@ -36,19 +36,14 @@ static void sim_notify_exec(const char *binary_name) } while (c); } -static int notify_exec(void) +static int notify_exec(struct mm_struct *mm) { int retval = 0; /* failure */ - struct vm_area_struct *vma = current->mm->mmap; - while (vma) { - if ((vma->vm_flags & VM_EXECUTABLE) && vma->vm_file) - break; - vma = vma->vm_next; - } - if (vma) { + + if (mm->exe_file) { char *buf = (char *) __get_free_page(GFP_KERNEL); if (buf) { - char *path = d_path(&vma->vm_file->f_path, + char *path = d_path(&mm->exe_file->f_path, buf, PAGE_SIZE); if (!IS_ERR(path)) { sim_notify_exec(path); @@ -106,16 +101,16 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, unsigned long vdso_base; int retval = 0; + down_write(&mm->mmap_sem); + /* * Notify the simulator that an exec just occurred. * If we can't find the filename of the mapping, just use * whatever was passed as the linux_binprm filename. */ - if (!notify_exec()) + if (!notify_exec(mm)) sim_notify_exec(bprm->filename); - down_write(&mm->mmap_sem); - /* * MAYWRITE to allow gdb to COW and set breakpoints */ |