Skip to content

Commit

Permalink
Merge branch 'stable-4.9' of git://git.infradead.org/users/pcmoore/se…
Browse files Browse the repository at this point in the history
…linux into next
  • Loading branch information
James Morris committed Sep 21, 2016
2 parents de2f4b3 + 43af5de commit 8a17ef9
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 8 deletions.
2 changes: 2 additions & 0 deletions include/linux/lsm_audit.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ struct common_audit_data {
#define LSM_AUDIT_DATA_INODE 9
#define LSM_AUDIT_DATA_DENTRY 10
#define LSM_AUDIT_DATA_IOCTL_OP 11
#define LSM_AUDIT_DATA_FILE 12
union {
struct path path;
struct dentry *dentry;
Expand All @@ -75,6 +76,7 @@ struct common_audit_data {
#endif
char *kmod_name;
struct lsm_ioctlop_audit *op;
struct file *file;
} u;
/* this union contains LSM specific data */
union {
Expand Down
13 changes: 13 additions & 0 deletions security/lsm_audit.c
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,19 @@ static void dump_common_audit_data(struct audit_buffer *ab,
}
break;
}
case LSM_AUDIT_DATA_FILE: {
struct inode *inode;

audit_log_d_path(ab, " path=", &a->u.file->f_path);

inode = file_inode(a->u.file);
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);
}
break;
}
case LSM_AUDIT_DATA_IOCTL_OP: {
struct inode *inode;

Expand Down
16 changes: 8 additions & 8 deletions security/selinux/hooks.c
Original file line number Diff line number Diff line change
Expand Up @@ -1761,8 +1761,8 @@ static inline int file_path_has_perm(const struct cred *cred,
{
struct common_audit_data ad;

ad.type = LSM_AUDIT_DATA_PATH;
ad.u.path = file->f_path;
ad.type = LSM_AUDIT_DATA_FILE;
ad.u.file = file;
return inode_has_perm(cred, file_inode(file), av, &ad);
}

Expand All @@ -1784,8 +1784,8 @@ static int file_has_perm(const struct cred *cred,
u32 sid = cred_sid(cred);
int rc;

ad.type = LSM_AUDIT_DATA_PATH;
ad.u.path = file->f_path;
ad.type = LSM_AUDIT_DATA_FILE;
ad.u.file = file;

if (sid != fsec->sid) {
rc = avc_has_perm(sid, fsec->sid,
Expand Down Expand Up @@ -2365,8 +2365,8 @@ static int selinux_bprm_set_creds(struct linux_binprm *bprm)
new_tsec->sid = old_tsec->sid;
}

ad.type = LSM_AUDIT_DATA_PATH;
ad.u.path = bprm->file->f_path;
ad.type = LSM_AUDIT_DATA_FILE;
ad.u.file = bprm->file;

if (new_tsec->sid == old_tsec->sid) {
rc = avc_has_perm(old_tsec->sid, isec->sid,
Expand Down Expand Up @@ -3833,8 +3833,8 @@ static int selinux_kernel_module_from_file(struct file *file)

/* finit_module */

ad.type = LSM_AUDIT_DATA_PATH;
ad.u.path = file->f_path;
ad.type = LSM_AUDIT_DATA_FILE;
ad.u.file = file;

fsec = file->f_security;
if (sid != fsec->sid) {
Expand Down

0 comments on commit 8a17ef9

Please sign in to comment.