aboutsummaryrefslogtreecommitdiffstats
path: root/security/integrity/integrity_audit.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-07-03 17:04:58 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-07-03 17:04:58 -0400
commitf39d420f672f99ad9a0fe7deb951a0030d4f0d9e (patch)
tree450e229a4305362f72cc5461aab8af4f2f5d023e /security/integrity/integrity_audit.c
parentfe489bf4505ae26d3c6d6a1f1d3064c2a9c5cd85 (diff)
parent572e5b018ba68d634f30aef71cf04d85c884aa05 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
Pull security subsystem updates from James Morris: "In this update, Smack learns to love IPv6 and to mount a filesystem with a transmutable hierarchy (i.e. security labels are inherited from parent directory upon creation rather than creating process). The rest of the changes are maintenance" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (37 commits) tpm/tpm_i2c_infineon: Remove unused header file tpm: tpm_i2c_infinion: Don't modify i2c_client->driver evm: audit integrity metadata failures integrity: move integrity_audit_msg() evm: calculate HMAC after initializing posix acl on tmpfs maintainers: add Dmitry Kasatkin Smack: Fix the bug smackcipso can't set CIPSO correctly Smack: Fix possible NULL pointer dereference at smk_netlbl_mls() Smack: Add smkfstransmute mount option Smack: Improve access check performance Smack: Local IPv6 port based controls tpm: fix regression caused by section type conflict of tpm_dev_release() in ppc builds maintainers: Remove Kent from maintainers tpm: move TPM_DIGEST_SIZE defintion tpm_tis: missing platform_driver_unregister() on error in init_tis() security: clarify cap_inode_getsecctx description apparmor: no need to delay vfree() apparmor: fix fully qualified name parsing apparmor: fix setprocattr arg processing for onexec apparmor: localize getting the security context to a few macros ...
Diffstat (limited to 'security/integrity/integrity_audit.c')
-rw-r--r--security/integrity/integrity_audit.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/security/integrity/integrity_audit.c b/security/integrity/integrity_audit.c
new file mode 100644
index 000000000000..d7efb30404aa
--- /dev/null
+++ b/security/integrity/integrity_audit.c
@@ -0,0 +1,64 @@
1/*
2 * Copyright (C) 2008 IBM Corporation
3 * Author: Mimi Zohar <zohar@us.ibm.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 2 of the License.
8 *
9 * File: integrity_audit.c
10 * Audit calls for the integrity subsystem
11 */
12
13#include <linux/fs.h>
14#include <linux/gfp.h>
15#include <linux/audit.h>
16#include "integrity.h"
17
18static int integrity_audit_info;
19
20/* ima_audit_setup - enable informational auditing messages */
21static int __init integrity_audit_setup(char *str)
22{
23 unsigned long audit;
24
25 if (!strict_strtoul(str, 0, &audit))
26 integrity_audit_info = audit ? 1 : 0;
27 return 1;
28}
29__setup("integrity_audit=", integrity_audit_setup);
30
31void integrity_audit_msg(int audit_msgno, struct inode *inode,
32 const unsigned char *fname, const char *op,
33 const char *cause, int result, int audit_info)
34{
35 struct audit_buffer *ab;
36
37 if (!integrity_audit_info && audit_info == 1) /* Skip info messages */
38 return;
39
40 ab = audit_log_start(current->audit_context, GFP_KERNEL, audit_msgno);
41 audit_log_format(ab, "pid=%d uid=%u auid=%u ses=%u",
42 current->pid,
43 from_kuid(&init_user_ns, current_cred()->uid),
44 from_kuid(&init_user_ns, audit_get_loginuid(current)),
45 audit_get_sessionid(current));
46 audit_log_task_context(ab);
47 audit_log_format(ab, " op=");
48 audit_log_string(ab, op);
49 audit_log_format(ab, " cause=");
50 audit_log_string(ab, cause);
51 audit_log_format(ab, " comm=");
52 audit_log_untrustedstring(ab, current->comm);
53 if (fname) {
54 audit_log_format(ab, " name=");
55 audit_log_untrustedstring(ab, fname);
56 }
57 if (inode) {
58 audit_log_format(ab, " dev=");
59 audit_log_untrustedstring(ab, inode->i_sb->s_id);
60 audit_log_format(ab, " ino=%lu", inode->i_ino);
61 }
62 audit_log_format(ab, " res=%d", !result);
63 audit_log_end(ab);
64}