diff options
author | Jeff Vander Stoep <jeffv@google.com> | 2015-04-04 16:15:54 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2015-11-09 06:36:33 -0800 |
commit | ccec3aa9fda8483a2e0e0b9de6ba612f4bdcc314 (patch) | |
tree | d7d753ff2bae33d7381dba4a024d29f2cef4fad1 | |
parent | 6b846b71ac18bedded78e7ee031e1f84b2e97619 (diff) | |
download | kernel_samsung_smdk4412-ccec3aa9fda8483a2e0e0b9de6ba612f4bdcc314.tar.gz kernel_samsung_smdk4412-ccec3aa9fda8483a2e0e0b9de6ba612f4bdcc314.tar.bz2 kernel_samsung_smdk4412-ccec3aa9fda8483a2e0e0b9de6ba612f4bdcc314.zip |
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 | 7 | ||||
-rw-r--r-- | security/lsm_audit.c | 15 |
2 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/lsm_audit.h b/include/linux/lsm_audit.h index 88e78dedc2e..65e2962b3b5 100644 --- a/include/linux/lsm_audit.h +++ b/include/linux/lsm_audit.h @@ -24,6 +24,11 @@ #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 { char type; @@ -37,6 +42,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 +75,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 893af8a2fa1..cb17791d96a 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; |