diff options
Diffstat (limited to 'security/selinux/hooks.c')
| -rw-r--r-- | security/selinux/hooks.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index f9c3764e4859..a73f4e463774 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -2635,7 +2635,7 @@ static int selinux_inode_follow_link(struct dentry *dentry, struct nameidata *na  	return dentry_has_perm(cred, NULL, dentry, FILE__READ);  } -static int selinux_inode_permission(struct inode *inode, int mask) +static int selinux_inode_permission(struct inode *inode, int mask, unsigned flags)  {  	const struct cred *cred = current_cred();  	struct common_audit_data ad; @@ -2649,6 +2649,10 @@ static int selinux_inode_permission(struct inode *inode, int mask)  	if (!mask)  		return 0; +	/* May be droppable after audit */ +	if (flags & IPERM_FLAG_RCU) +		return -ECHILD; +  	COMMON_AUDIT_DATA_INIT(&ad, FS);  	ad.u.fs.inode = inode;  | 
