Skip to content

Commit

Permalink
audit: consolidate handling of mm->exe_file
Browse files Browse the repository at this point in the history
This patch adds a audit_log_d_path_exe() helper function
to share how we handle auditing of the exe_file's path.
Used by both audit and auditsc. No functionality is changed.

Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
[PM: tweaked subject line]
Signed-off-by: Paul Moore <pmoore@redhat.com>
  • Loading branch information
Davidlohr Bueso authored and Paul Moore committed Feb 23, 2015
1 parent 5985de6 commit 4766b19
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 16 deletions.
23 changes: 15 additions & 8 deletions kernel/audit.c
Original file line number Diff line number Diff line change
Expand Up @@ -1848,11 +1848,24 @@ int audit_log_task_context(struct audit_buffer *ab)
}
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)
Expand Down Expand Up @@ -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);
Expand Down
3 changes: 3 additions & 0 deletions kernel/audit.h
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,9 @@ extern struct list_head audit_filter_list[];

extern struct audit_entry *audit_dupe_rule(struct audit_krule *old);

extern void audit_log_d_path_exe(struct audit_buffer *ab,
struct mm_struct *mm);

/* audit watch functions */
#ifdef CONFIG_AUDIT_WATCH
extern void audit_put_watch(struct audit_watch *watch);
Expand Down
9 changes: 1 addition & 8 deletions kernel/auditsc.c
Original file line number Diff line number Diff line change
Expand Up @@ -2460,7 +2460,6 @@ static void audit_log_task(struct audit_buffer *ab)
kuid_t auid, uid;
kgid_t gid;
unsigned int sessionid;
struct mm_struct *mm = current->mm;
char comm[sizeof(current->comm)];

auid = audit_get_loginuid(current);
Expand All @@ -2475,13 +2474,7 @@ static void audit_log_task(struct audit_buffer *ab)
audit_log_task_context(ab);
audit_log_format(ab, " pid=%d comm=", task_pid_nr(current));
audit_log_untrustedstring(ab, get_task_comm(comm, current));
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, current->mm);
}

/**
Expand Down

0 comments on commit 4766b19

Please sign in to comment.