audit: consolidate handling of mm->exe_file
[firefly-linux-kernel-4.4.55.git] / kernel / audit.c
index d219bb03a36456d9eb86bdd411e4fa976b154e98..684b51d612a383f7580c234e63413caec4b5f00a 100644 (file)
@@ -1848,11 +1848,24 @@ error_path:
 }
 EXPORT_SYMBOL(audit_log_task_context);
 
+void audit_log_d_path_exe(struct audit_buffer *ab,
+                         struct mm_struct *mm)
+{
+       if (!mm) {
+               audit_log_format(ab, " exe=(null)");
+               return;
+       }
+
+       down_read(&mm->mmap_sem);
+       if (mm->exe_file)
+               audit_log_d_path(ab, " exe=", &mm->exe_file->f_path);
+       up_read(&mm->mmap_sem);
+}
+
 void audit_log_task_info(struct audit_buffer *ab, struct task_struct *tsk)
 {
        const struct cred *cred;
        char comm[sizeof(tsk->comm)];
-       struct mm_struct *mm = tsk->mm;
        char *tty;
 
        if (!ab)
@@ -1888,13 +1901,7 @@ void audit_log_task_info(struct audit_buffer *ab, struct task_struct *tsk)
        audit_log_format(ab, " comm=");
        audit_log_untrustedstring(ab, get_task_comm(comm, tsk));
 
-       if (mm) {
-               down_read(&mm->mmap_sem);
-               if (mm->exe_file)
-                       audit_log_d_path(ab, " exe=", &mm->exe_file->f_path);
-               up_read(&mm->mmap_sem);
-       } else
-               audit_log_format(ab, " exe=(null)");
+       audit_log_d_path_exe(ab, tsk->mm);
        audit_log_task_context(ab);
 }
 EXPORT_SYMBOL(audit_log_task_info);