diff --git a/fs/incfs/vfs.c b/fs/incfs/vfs.c index 0d735b0d27ac..5b09f1f83511 100644 --- a/fs/incfs/vfs.c +++ b/fs/incfs/vfs.c @@ -1872,11 +1872,10 @@ struct dentry *incfs_mount_fs(struct file_system_type *type, int flags, goto err; } - mi->mi_backing_dir_path = backing_dir_path; + path_put(&backing_dir_path); sb->s_flags |= SB_ACTIVE; pr_debug("incfs: mount\n"); - free_options(&options); return dget(sb->s_root); err: sb->s_fs_info = NULL; @@ -1923,12 +1922,7 @@ void incfs_kill_sb(struct super_block *sb) struct mount_info *mi = sb->s_fs_info; pr_debug("incfs: unmount\n"); - vfs_rmdir(&init_user_ns, d_inode(mi->mi_backing_dir_path.dentry), - mi->mi_index_dir); - vfs_rmdir(&init_user_ns, d_inode(mi->mi_backing_dir_path.dentry), - mi->mi_incomplete_dir); - - kill_anon_super(sb); + generic_shutdown_super(sb); incfs_free_mount_info(mi); sb->s_fs_info = NULL; }