From: Michael Halcrow On unmount, eCryptfs needs to decrement the mount count of the lower mount, or else you cannot unmount the lower filesystem. Signed-off-by: Michael Halcrow Signed-off-by: Andrew Morton --- fs/ecryptfs/super.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-) diff -puN fs/ecryptfs/super.c~ecryptfs-mntput-lower-mount-on-umount_begin fs/ecryptfs/super.c --- a/fs/ecryptfs/super.c~ecryptfs-mntput-lower-mount-on-umount_begin +++ a/fs/ecryptfs/super.c @@ -144,10 +144,7 @@ static void ecryptfs_clear_inode(struct /** * ecryptfs_umount_begin * - * Called in do_umount() if the MNT_FORCE flag was used and this - * function is defined. See comment in linux/fs/super.c:do_umount(). - * Used only in nfs, to kill any pending RPC tasks, so that subsequent - * code can actually succeed and won't leave tasks that need handling. + * Called in do_umount(). */ static void ecryptfs_umount_begin(struct vfsmount *vfsmnt, int flags) { @@ -155,6 +152,7 @@ static void ecryptfs_umount_begin(struct ecryptfs_dentry_to_lower_mnt(vfsmnt->mnt_sb->s_root); struct super_block *lower_sb; + mntput(lower_mnt); lower_sb = lower_mnt->mnt_sb; if (lower_sb->s_op->umount_begin) lower_sb->s_op->umount_begin(lower_mnt, flags); _