mm: use mm->exe_file instead of first VM_EXECUTABLE vma->vm_file

Some security modules and oprofile still uses VM_EXECUTABLE for retrieving
a task's executable file.  After this patch they will use mm->exe_file
directly.  mm->exe_file is protected with mm->mmap_sem, so locking stays
the same.

Signed-off-by: Konstantin Khlebnikov <[email protected]>
Acked-by: Chris Metcalf <[email protected]>			[arch/tile]
Acked-by: Tetsuo Handa <[email protected]>	[tomoyo]
Cc: Alexander Viro <[email protected]>
Cc: Carsten Otte <[email protected]>
Cc: Cyrill Gorcunov <[email protected]>
Cc: Eric Paris <[email protected]>
Cc: H. Peter Anvin <[email protected]>
Cc: Hugh Dickins <[email protected]>
Cc: Ingo Molnar <[email protected]>
Acked-by: James Morris <[email protected]>
Cc: Jason Baron <[email protected]>
Cc: Kentaro Takeda <[email protected]>
Cc: Matt Helsley <[email protected]>
Cc: Nick Piggin <[email protected]>
Cc: Oleg Nesterov <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Robert Richter <[email protected]>
Cc: Suresh Siddha <[email protected]>
Cc: Venkatesh Pallipadi <[email protected]>
Acked-by: Linus Torvalds <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
Konstantin Khlebnikov 2012-10-08 16:28:51 -07:00 • committed by Linus Torvalds
commit 2dd8ad81e3
6 changed files with 19 additions and 57 deletions

View file

@ -216,7 +216,7 @@ static inline unsigned long fast_get_dcookie(struct path *path)
}
/* Look up the dcookie for the task's first VM_EXECUTABLE mapping,
/* Look up the dcookie for the task's mm->exe_file,
* which corresponds loosely to "application name". This is
* not strictly necessary but allows oprofile to associate
* shared-library samples with particular applications
@ -224,21 +224,10 @@ static inline unsigned long fast_get_dcookie(struct path *path)
static unsigned long get_exec_dcookie(struct mm_struct *mm)
{
unsigned long cookie = NO_COOKIE;
struct vm_area_struct *vma;
if (!mm)
goto out;
if (mm && mm->exe_file)
cookie = fast_get_dcookie(&mm->exe_file->f_path);
for (vma = mm->mmap; vma; vma = vma->vm_next) {
if (!vma->vm_file)
continue;
if (!(vma->vm_flags & VM_EXECUTABLE))
continue;
cookie = fast_get_dcookie(&vma->vm_file->f_path);
break;
}
out:
return cookie;
}