SELinux: no BUG_ON(!ss_initialized) in selinux_clone_mnt_opts
PATCH 1/1 SELinux: no BUG_ON(!ss_initialized) in selinux_clone_mnt_opts
The Fedora installer actually makes multiple NFS mounts before it loads selinux policy. The code in selinux_clone_mnt_opts() assumed that the init process would always be loading policy before NFS was up and running. It might be possible to hit this in a diskless environment as well, I'm not sure. There is no need to BUG_ON() in this situation since we can safely continue given the circumstances.
---
security/selinux/hooks.c | 15 ++++++++++++--- 1 files changed, 12 insertions(+), 3 deletions(-)
security/selinux/hooks.c +12 -3
@@ -755,9 +755,18 @@ static void selinux_sb_clone_mnt_opts(const struct super_block *oldsb,int set_context = (oldsbsec->flags &CONTEXT_MNT );int set_rootcontext = (oldsbsec->flags &ROOTCONTEXT_MNT ); -/* we can't error, we can't save the info, this shouldn't get called -* this early in the boot process. */ -BUG_ON (!ss_initialized); +/* +* if the parent was able to be mounted it clearly had no special lsm +* mount options. thus we can safely put this sb on the list and deal +* with it later +*/ +if (!ss_initialized) { +spin_lock (&sb_security_lock); +if (list_empty (&newsbsec->list)) +list_add (&newsbsec->list, &superblock_security_head); +spin_unlock (&sb_security_lock); +return ; + }/* how can we clone if the old one wasn't set up?? */ BUG_ON (!oldsbsec->initialized);
--
This message was distributed to subscribers of the selinux mailing list. If you no longer wish to subscribe, send mail to [email protected] with the words "unsubscribe selinux" without quotes as the message.
Quoted 8 lines · Eric Paris
The Fedora installer actually makes multiple NFS mounts before it loads selinux policy. The code in
selinux_clone_mnt_opts()assumed that the init process would always be loading policy before NFS was up and running. It might be possible to hit this in a diskless environment as well, I'm not sure. There is no need toBUG_ON()in this situation since we can safely continue given the circumstances.Signed-off-by Eric Paris <[email protected]>
Quoted 33 lines
---
security/selinux/hooks.c | 15 ++++++++++++--- 1 files changed, 12 insertions(+), 3 deletions(-)security/selinux/hooks.c +12
-3@@ -755,9 +755,18 @@ static void selinux_sb_clone_mnt_opts(const struct super_block *oldsb,int set_context = (oldsbsec->flags &CONTEXT_MNT );int set_rootcontext = (oldsbsec->flags &ROOTCONTEXT_MNT ); -/* we can't error, we can't save the info, this shouldn't get called -* this early in the boot process. */ -BUG_ON (!ss_initialized); +/* +* if the parent was able to be mounted it clearly had no special lsm +* mount options. thus we can safely put this sb on the list and deal +* with it later +*/ +if (!ss_initialized) { +spin_lock (&sb_security_lock); +if (list_empty (&newsbsec->list)) +list_add (&newsbsec->list, &superblock_security_head); +spin_unlock (&sb_security_lock); +return ; + }/* how can we clone if the old one wasn't set up?? */ BUG_ON (!oldsbsec->initialized);
Signature · 8 lines
Stephen Smalley National Security Agency -- This message was distributed to subscribers of the selinux mailing list. If you no longer wish to subscribe, send mail to [email protected] with the words "unsubscribe selinux" without quotes as the message.