diff -NurpP --minimal linux-2.6.29-vs2.3.0.36.9-pre4/fs/namespace.c linux-2.6.29-vs2.3.0.36.9-pre5/fs/namespace.c --- linux-2.6.29-vs2.3.0.36.9-pre4/fs/namespace.c 2009-03-24 14:48:35.000000000 +0100 +++ linux-2.6.29-vs2.3.0.36.9-pre5/fs/namespace.c 2009-04-10 23:15:11.000000000 +0200 @@ -2278,9 +2278,10 @@ SYSCALL_DEFINE2(pivot_root, const char _ down_write(&namespace_sem); mutex_lock(&old.dentry->d_inode->i_mutex); error = -EINVAL; - if (IS_MNT_SHARED(old.mnt) || + if ((IS_MNT_SHARED(old.mnt) || IS_MNT_SHARED(new.mnt->mnt_parent) || - IS_MNT_SHARED(root.mnt->mnt_parent)) + IS_MNT_SHARED(root.mnt->mnt_parent)) && + !vx_flags(VXF_STATE_SETUP, 0)) goto out2; if (!check_mnt(root.mnt)) goto out2;