Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[firefly-linux-kernel-4.4.55.git] / security / tomoyo / util.c
index 2952ba576fb9ceed3f64c23663a2b40f3cfbe13e..b974a6997d7f8b7a81f8d2062c59a810b0a6c2d7 100644 (file)
@@ -948,15 +948,18 @@ bool tomoyo_path_matches_pattern(const struct tomoyo_path_info *filename,
  */
 const char *tomoyo_get_exe(void)
 {
+       struct file *exe_file;
+       const char *cp;
        struct mm_struct *mm = current->mm;
-       const char *cp = NULL;
 
        if (!mm)
                return NULL;
-       down_read(&mm->mmap_sem);
-       if (mm->exe_file)
-               cp = tomoyo_realpath_from_path(&mm->exe_file->f_path);
-       up_read(&mm->mmap_sem);
+       exe_file = get_mm_exe_file(mm);
+       if (!exe_file)
+               return NULL;
+
+       cp = tomoyo_realpath_from_path(&exe_file->f_path);
+       fput(exe_file);
        return cp;
 }