diff options
Diffstat (limited to 'security/selinux/hooks.c')
| -rw-r--r-- | security/selinux/hooks.c | 13 | 
1 files changed, 11 insertions, 2 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 336f0a04450e..b3a6754e932b 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -4499,9 +4499,18 @@ static void selinux_sock_graft(struct sock *sk, struct socket *parent)  	struct inode_security_struct *isec = SOCK_INODE(parent)->i_security;  	struct sk_security_struct *sksec = sk->sk_security; -	if (sk->sk_family == PF_INET || sk->sk_family == PF_INET6 || -	    sk->sk_family == PF_UNIX) +	switch (sk->sk_family) { +	case PF_INET: +	case PF_INET6: +	case PF_UNIX:  		isec->sid = sksec->sid; +		break; +	default: +		/* by default there is no special labeling mechanism for the +		 * sksec label so inherit the label from the parent socket */ +		BUG_ON(sksec->sid != SECINITSID_UNLABELED); +		sksec->sid = isec->sid; +	}  	sksec->sclass = isec->sclass;  }  | 
