diff options
author | Konstantin Khlebnikov <khlebnikov@openvz.org> | 2012-10-08 19:28:51 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-09 03:22:18 -0400 |
commit | 2dd8ad81e31d0d36a5d448329c646ab43eb17788 (patch) | |
tree | cd358be45ed8067673edac7f1db6b6a42a96d9db /security | |
parent | 0b173bc4daa8f8ec03a85abf5e47b23502ff80af (diff) |
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 <khlebnikov@openvz.org>
Acked-by: Chris Metcalf <cmetcalf@tilera.com> [arch/tile]
Acked-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> [tomoyo]
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Carsten Otte <cotte@de.ibm.com>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Eric Paris <eparis@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Acked-by: James Morris <james.l.morris@oracle.com>
Cc: Jason Baron <jbaron@redhat.com>
Cc: Kentaro Takeda <takedakn@nttdata.co.jp>
Cc: Matt Helsley <matthltc@us.ibm.com>
Cc: Nick Piggin <npiggin@kernel.dk>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Venkatesh Pallipadi <venki@google.com>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'security')
-rw-r--r-- | security/tomoyo/util.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/security/tomoyo/util.c b/security/tomoyo/util.c index 867558c98334..2952ba576fb9 100644 --- a/security/tomoyo/util.c +++ b/security/tomoyo/util.c | |||
@@ -949,18 +949,13 @@ bool tomoyo_path_matches_pattern(const struct tomoyo_path_info *filename, | |||
949 | const char *tomoyo_get_exe(void) | 949 | const char *tomoyo_get_exe(void) |
950 | { | 950 | { |
951 | struct mm_struct *mm = current->mm; | 951 | struct mm_struct *mm = current->mm; |
952 | struct vm_area_struct *vma; | ||
953 | const char *cp = NULL; | 952 | const char *cp = NULL; |
954 | 953 | ||
955 | if (!mm) | 954 | if (!mm) |
956 | return NULL; | 955 | return NULL; |
957 | down_read(&mm->mmap_sem); | 956 | down_read(&mm->mmap_sem); |
958 | for (vma = mm->mmap; vma; vma = vma->vm_next) { | 957 | if (mm->exe_file) |
959 | if ((vma->vm_flags & VM_EXECUTABLE) && vma->vm_file) { | 958 | cp = tomoyo_realpath_from_path(&mm->exe_file->f_path); |
960 | cp = tomoyo_realpath_from_path(&vma->vm_file->f_path); | ||
961 | break; | ||
962 | } | ||
963 | } | ||
964 | up_read(&mm->mmap_sem); | 959 | up_read(&mm->mmap_sem); |
965 | return cp; | 960 | return cp; |
966 | } | 961 | } |