Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4766b199 authored by Davidlohr Bueso's avatar Davidlohr Bueso Committed by Paul Moore
Browse files

audit: consolidate handling of mm->exe_file



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: default avatarDavidlohr Bueso <dbueso@suse.de>
[PM: tweaked subject line]
Signed-off-by: default avatarPaul Moore <pmoore@redhat.com>
parent 5985de67
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -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)
@@ -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);
+3 −0
Original line number Diff line number Diff line
@@ -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);
+1 −8
Original line number Diff line number Diff line
@@ -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);
@@ -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);
}

/**