Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8a17ef9d authored by James Morris's avatar James Morris
Browse files

Merge branch 'stable-4.9' of git://git.infradead.org/users/pcmoore/selinux into next

parents de2f4b34 43af5de7
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -59,6 +59,7 @@ struct common_audit_data {
#define LSM_AUDIT_DATA_INODE	9
#define LSM_AUDIT_DATA_INODE	9
#define LSM_AUDIT_DATA_DENTRY	10
#define LSM_AUDIT_DATA_DENTRY	10
#define LSM_AUDIT_DATA_IOCTL_OP	11
#define LSM_AUDIT_DATA_IOCTL_OP	11
#define LSM_AUDIT_DATA_FILE	12
	union 	{
	union 	{
		struct path path;
		struct path path;
		struct dentry *dentry;
		struct dentry *dentry;
@@ -75,6 +76,7 @@ struct common_audit_data {
#endif
#endif
		char *kmod_name;
		char *kmod_name;
		struct lsm_ioctlop_audit *op;
		struct lsm_ioctlop_audit *op;
		struct file *file;
	} u;
	} u;
	/* this union contains LSM specific data */
	/* this union contains LSM specific data */
	union {
	union {
+13 −0
Original line number Original line Diff line number Diff line
@@ -245,6 +245,19 @@ static void dump_common_audit_data(struct audit_buffer *ab,
		}
		}
		break;
		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: {
	case LSM_AUDIT_DATA_IOCTL_OP: {
		struct inode *inode;
		struct inode *inode;


+8 −8
Original line number Original line Diff line number Diff line
@@ -1761,8 +1761,8 @@ static inline int file_path_has_perm(const struct cred *cred,
{
{
	struct common_audit_data ad;
	struct common_audit_data ad;


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


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


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


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


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


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


	/* finit_module */
	/* finit_module */


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


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