diff options
author | Jeff Vander Stoep <jeffv@google.com> | 2015-07-10 17:19:55 -0400 |
---|---|---|
committer | Leo Wang <leozwang@google.com> | 2015-12-04 17:24:11 +0000 |
commit | 85c8548d9f19b545ae83d39cffcd3a0209f3c948 (patch) | |
tree | b7ced88cf2719007f2490599e9abaaed236c7790 | |
parent | c4333cc2194d411ae9e080fcd135ebb0843a8b41 (diff) | |
download | v4.1-85c8548d9f19b545ae83d39cffcd3a0209f3c948.tar.gz |
UPSTREAM: security: add ioctl specific auditing to lsm_audit
Add information about ioctl calls to the LSM audit data. Log the
file path and command number.
Signed-off-by: Jeff Vander Stoep <jeffv@google.com>
Acked-by: Nick Kralevich <nnk@google.com>
[PM: subject line tweak]
Signed-off-by: Paul Moore <pmoore@redhat.com>
Bug: 25923642
Patchset: rk3036 evb bring up
(cherry picked from commit 671a2781ff01abf4fdc8904881fc3abd3a8279af)
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
Change-Id: Ic91f79259490d25c2cafc6e49de0d6b8aa9a815a
-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 1cc89e9df48..ffb9c9da4f3 100644 --- a/include/linux/lsm_audit.h +++ b/include/linux/lsm_audit.h @@ -40,6 +40,11 @@ struct lsm_network_audit { } fam; }; +struct lsm_ioctlop_audit { + struct path path; + u16 cmd; +}; + /* Auxiliary data to use in generating the audit record. */ struct common_audit_data { char type; @@ -53,6 +58,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 union { struct path path; struct dentry *dentry; @@ -68,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 1d34277dc40..9f6c649c65e 100644 --- a/security/lsm_audit.c +++ b/security/lsm_audit.c @@ -245,6 +245,21 @@ static void dump_common_audit_data(struct audit_buffer *ab, } 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; |