MNT_DETACH
flags & (MNT_FORCE | MNT_DETACH))
if (&mnt->mnt == current->fs->root.mnt && !(flags & MNT_DETACH)) {
if (flags & MNT_DETACH) {
if (flags & ~(MNT_FORCE | MNT_DETACH | MNT_EXPIRE | UMOUNT_NOFOLLOW))
if (init_umount(".", MNT_DETACH)) {
if (umount2("/tmp/foo", MNT_DETACH) < 0 && errno != EINVAL) {
umount2("/sys", MNT_DETACH);
ret = umount2(binderfs_mntpt, MNT_DETACH);
ret = umount2(binderfs_mntpt, MNT_DETACH);
umount2(self->fuse_mountpoint, MNT_DETACH);
EXPECT_EQ(umount2(self->root_mntpoint, MNT_DETACH), 0);
ret = umount2("/", MNT_DETACH);
umount2("/a", MNT_DETACH);
EXPECT_EQ(umount2(self->root_mntpoint, MNT_DETACH), 0);
ret = umount2("/", MNT_DETACH);
umount2("/a", MNT_DETACH);
if (umount2(mnt_point, MNT_DETACH) == 0) {
if (umount2(mnt_point, MNT_DETACH) != 0) {
umount2(self->tmpdir, MNT_DETACH);
umount2(root_mntpoint, MNT_DETACH);
umount2(subdir, MNT_DETACH);
umount2(tmpdir, MNT_DETACH);
if (umount2(tmpdir, MNT_DETACH)) {
umount2(subdir, MNT_DETACH);
umount2(tmpdir, MNT_DETACH);
if (umount2(mnt, MNT_DETACH)) {
umount2(mnt, MNT_DETACH);
(void)umount2("/mnt", MNT_DETACH);
(void)umount2("/tmp", MNT_DETACH);
(void)umount2("/mnt/A", MNT_DETACH);
(void)umount2("/tmp", MNT_DETACH);
(void)umount2("/mnt/A", MNT_DETACH);
ASSERT_EQ(umount2("/tmp/target1", MNT_DETACH), 0);
(void)umount2("/mnt", MNT_DETACH);
(void)umount2("/tmp", MNT_DETACH);
(void)umount2("/mnt/A", MNT_DETACH);
(void)umount2("/tmp", MNT_DETACH);
umount2("/tmp", MNT_DETACH);
umount2("/tmp", MNT_DETACH);
umount2("/tmp", MNT_DETACH);
umount2("/proc", MNT_DETACH);
umount2("/proc", MNT_DETACH);
umount2("/proc", MNT_DETACH);
umount2("/proc", MNT_DETACH);
umount2("/proc", MNT_DETACH);
(void)umount2("/proc", MNT_DETACH);
(void)umount2("/proc", MNT_DETACH);