mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
SELinux: don't BUG if fs reuses a superblock
I (wrongly) assumed that nfs_xdev_get_sb() would not ever share a superblock and so cloning mount options would always be correct. Turns out that isn't the case and we could fall over a BUG_ON() that wasn't a BUG at all. Since there is little we can do to reconcile different mount options this patch just leaves the sb alone and the first set of options wins. Signed-off-by: Eric Paris <eparis@redhat.com> Acked-by: Stephen Smalley <sds@tycho.nsa.gov> Acked-by: Trond Myklebust <trond.myklebust@fys.uio.no> Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
parent
7180c4c9e0
commit
5a55261716
@ -760,13 +760,13 @@ static void selinux_sb_clone_mnt_opts(const struct super_block *oldsb,
|
|||||||
* this early in the boot process. */
|
* this early in the boot process. */
|
||||||
BUG_ON(!ss_initialized);
|
BUG_ON(!ss_initialized);
|
||||||
|
|
||||||
/* this might go away sometime down the line if there is a new user
|
|
||||||
* of clone, but for now, nfs better not get here... */
|
|
||||||
BUG_ON(newsbsec->initialized);
|
|
||||||
|
|
||||||
/* how can we clone if the old one wasn't set up?? */
|
/* how can we clone if the old one wasn't set up?? */
|
||||||
BUG_ON(!oldsbsec->initialized);
|
BUG_ON(!oldsbsec->initialized);
|
||||||
|
|
||||||
|
/* if fs is reusing a sb, just let its options stand... */
|
||||||
|
if (newsbsec->initialized)
|
||||||
|
return;
|
||||||
|
|
||||||
mutex_lock(&newsbsec->lock);
|
mutex_lock(&newsbsec->lock);
|
||||||
|
|
||||||
newsbsec->flags = oldsbsec->flags;
|
newsbsec->flags = oldsbsec->flags;
|
||||||
|
Loading…
Reference in New Issue
Block a user