Skip to content

Commit

Permalink
mnt: Factor umount_mnt from umount_tree
Browse files Browse the repository at this point in the history
For future use factor out a function umount_mnt from umount_tree.
This function unhashes a mount and remembers where the mount
was mounted so that eventually when the code makes it to a
sleeping context the mountpoint can be dput.

Cc: stable@vger.kernel.org
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
  • Loading branch information
ebiederm committed Apr 9, 2015
1 parent 7bdb11d commit 6a46c57
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions fs/namespace.c
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,16 @@ static void detach_mnt(struct mount *mnt, struct path *old_path)
unhash_mnt(mnt);
}

/*
* vfsmount lock must be held for write
*/
static void umount_mnt(struct mount *mnt)
{
/* old mountpoint will be dropped when we can do that */
mnt->mnt_ex_mountpoint = mnt->mnt_mountpoint;
unhash_mnt(mnt);
}

/*
* vfsmount lock must be held for write
*/
Expand Down Expand Up @@ -1371,9 +1381,7 @@ static void umount_tree(struct mount *mnt, enum umount_tree_flags how)
pin_insert_group(&p->mnt_umount, &p->mnt_parent->mnt, &unmounted);
if (mnt_has_parent(p)) {
mnt_add_count(p->mnt_parent, -1);
/* old mountpoint will be dropped when we can do that */
p->mnt_ex_mountpoint = p->mnt_mountpoint;
unhash_mnt(p);
umount_mnt(p);
}
change_mnt_propagation(p, MS_PRIVATE);
}
Expand Down

0 comments on commit 6a46c57

Please sign in to comment.