|
@@ -2525,7 +2525,10 @@ static int selinux_inode_init_security(struct inode *inode, struct inode *dir,
|
|
sid = tsec->sid;
|
|
sid = tsec->sid;
|
|
newsid = tsec->create_sid;
|
|
newsid = tsec->create_sid;
|
|
|
|
|
|
- if (!newsid || !(sbsec->flags & SE_SBLABELSUPP)) {
|
|
|
|
|
|
+ if ((sbsec->flags & SE_SBINITIALIZED) &&
|
|
|
|
+ (sbsec->behavior == SECURITY_FS_USE_MNTPOINT))
|
|
|
|
+ newsid = sbsec->mntpoint_sid;
|
|
|
|
+ else if (!newsid || !(sbsec->flags & SE_SBLABELSUPP)) {
|
|
rc = security_transition_sid(sid, dsec->sid,
|
|
rc = security_transition_sid(sid, dsec->sid,
|
|
inode_mode_to_security_class(inode->i_mode),
|
|
inode_mode_to_security_class(inode->i_mode),
|
|
&newsid);
|
|
&newsid);
|