aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Vander Stoep <jeffv@google.com>2015-04-04 16:15:54 -0700
committerZiyan <jaraidaniel@gmail.com>2016-03-11 16:02:30 +0100
commitb0ef19fd80508fed2a46b549388a61fdbd595280 (patch)
treea0657fb84a715adc44c27901b0c7ebcf86d5999e
parentbc60d98192ef3deb6f45210df0c9d01248dcbc1b (diff)
downloadkernel_samsung_espresso10-b0ef19fd80508fed2a46b549388a61fdbd595280.zip
kernel_samsung_espresso10-b0ef19fd80508fed2a46b549388a61fdbd595280.tar.gz
kernel_samsung_espresso10-b0ef19fd80508fed2a46b549388a61fdbd595280.tar.bz2
security: lsm_audit: add ioctl specific auditing
Add information about ioctl calls to the LSM audit data. Log the file path and command number. Bug: 18087110 Change-Id: Idbbd106db6226683cb30022d9e8f6f3b8fab7f84 Signed-off-by: Jeff Vander Stoep <jeffv@google.com>
-rw-r--r--include/linux/lsm_audit.h6
-rw-r--r--security/lsm_audit.c15
2 files changed, 21 insertions, 0 deletions
diff --git a/include/linux/lsm_audit.h b/include/linux/lsm_audit.h
index 93d220d..233b9e6 100644
--- a/include/linux/lsm_audit.h
+++ b/include/linux/lsm_audit.h
@@ -23,6 +23,10 @@
#include <linux/skbuff.h>
#include <asm/system.h>
+struct lsm_ioctlop_audit {
+ struct path path;
+ u16 cmd;
+};
/* Auxiliary data to use in generating the audit record. */
struct common_audit_data {
@@ -37,6 +41,7 @@ struct common_audit_data {
#define LSM_AUDIT_DATA_KMOD 8
#define LSM_AUDIT_DATA_INODE 9
#define LSM_AUDIT_DATA_DENTRY 10
+#define LSM_AUDIT_DATA_IOCTL_OP 11
struct task_struct *tsk;
union {
struct path path;
@@ -69,6 +74,7 @@ struct common_audit_data {
} key_struct;
#endif
char *kmod_name;
+ struct lsm_ioctlop_audit *op;
} u;
/* this union contains LSM specific data */
union {
diff --git a/security/lsm_audit.c b/security/lsm_audit.c
index 893af8a..cb17791 100644
--- a/security/lsm_audit.c
+++ b/security/lsm_audit.c
@@ -240,6 +240,21 @@ static void dump_common_audit_data(struct audit_buffer *ab,
inode->i_ino);
break;
}
+ case LSM_AUDIT_DATA_IOCTL_OP: {
+ struct inode *inode;
+
+ audit_log_d_path(ab, " path=", &a->u.op->path);
+
+ inode = a->u.op->path.dentry->d_inode;
+ if (inode) {
+ audit_log_format(ab, " dev=");
+ audit_log_untrustedstring(ab, inode->i_sb->s_id);
+ audit_log_format(ab, " ino=%lu", inode->i_ino);
+ }
+
+ audit_log_format(ab, " ioctlcmd=%hx", a->u.op->cmd);
+ break;
+ }
case LSM_AUDIT_DATA_DENTRY: {
struct inode *inode;