|
@@ -2529,6 +2529,25 @@ void __audit_mmap_fd(int fd, int flags)
|
|
|
context->type = AUDIT_MMAP;
|
|
|
}
|
|
|
|
|
|
+static void audit_log_abend(struct audit_buffer *ab, char *reason, long signr)
|
|
|
+{
|
|
|
+ uid_t auid, uid;
|
|
|
+ gid_t gid;
|
|
|
+ unsigned int sessionid;
|
|
|
+
|
|
|
+ auid = audit_get_loginuid(current);
|
|
|
+ sessionid = audit_get_sessionid(current);
|
|
|
+ current_uid_gid(&uid, &gid);
|
|
|
+
|
|
|
+ audit_log_format(ab, "auid=%u uid=%u gid=%u ses=%u",
|
|
|
+ auid, uid, gid, sessionid);
|
|
|
+ audit_log_task_context(ab);
|
|
|
+ audit_log_format(ab, " pid=%d comm=", current->pid);
|
|
|
+ audit_log_untrustedstring(ab, current->comm);
|
|
|
+ audit_log_format(ab, " reason=");
|
|
|
+ audit_log_string(ab, reason);
|
|
|
+ audit_log_format(ab, " sig=%ld", signr);
|
|
|
+}
|
|
|
/**
|
|
|
* audit_core_dumps - record information about processes that end abnormally
|
|
|
* @signr: signal value
|
|
@@ -2539,10 +2558,6 @@ void __audit_mmap_fd(int fd, int flags)
|
|
|
void audit_core_dumps(long signr)
|
|
|
{
|
|
|
struct audit_buffer *ab;
|
|
|
- u32 sid;
|
|
|
- uid_t auid = audit_get_loginuid(current), uid;
|
|
|
- gid_t gid;
|
|
|
- unsigned int sessionid = audit_get_sessionid(current);
|
|
|
|
|
|
if (!audit_enabled)
|
|
|
return;
|
|
@@ -2551,24 +2566,17 @@ void audit_core_dumps(long signr)
|
|
|
return;
|
|
|
|
|
|
ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_ANOM_ABEND);
|
|
|
- current_uid_gid(&uid, &gid);
|
|
|
- audit_log_format(ab, "auid=%u uid=%u gid=%u ses=%u",
|
|
|
- auid, uid, gid, sessionid);
|
|
|
- security_task_getsecid(current, &sid);
|
|
|
- if (sid) {
|
|
|
- char *ctx = NULL;
|
|
|
- u32 len;
|
|
|
+ audit_log_abend(ab, "memory violation", signr);
|
|
|
+ audit_log_end(ab);
|
|
|
+}
|
|
|
|
|
|
- if (security_secid_to_secctx(sid, &ctx, &len))
|
|
|
- audit_log_format(ab, " ssid=%u", sid);
|
|
|
- else {
|
|
|
- audit_log_format(ab, " subj=%s", ctx);
|
|
|
- security_release_secctx(ctx, len);
|
|
|
- }
|
|
|
- }
|
|
|
- audit_log_format(ab, " pid=%d comm=", current->pid);
|
|
|
- audit_log_untrustedstring(ab, current->comm);
|
|
|
- audit_log_format(ab, " sig=%ld", signr);
|
|
|
+void __audit_seccomp(unsigned long syscall)
|
|
|
+{
|
|
|
+ struct audit_buffer *ab;
|
|
|
+
|
|
|
+ ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_ANOM_ABEND);
|
|
|
+ audit_log_abend(ab, "seccomp", SIGKILL);
|
|
|
+ audit_log_format(ab, " syscall=%ld", syscall);
|
|
|
audit_log_end(ab);
|
|
|
}
|
|
|
|