diff options
author | Jeff Vander Stoep <jeffv@google.com> | 2015-04-04 16:15:54 -0700 |
---|---|---|
committer | Ziyan <jaraidaniel@gmail.com> | 2016-03-11 16:02:30 +0100 |
commit | b0ef19fd80508fed2a46b549388a61fdbd595280 (patch) | |
tree | a0657fb84a715adc44c27901b0c7ebcf86d5999e | |
parent | bc60d98192ef3deb6f45210df0c9d01248dcbc1b (diff) | |
download | kernel_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.h | 6 | ||||
-rw-r--r-- | security/lsm_audit.c | 15 |
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; |