summaryrefslogtreecommitdiffstats
path: root/fs/configfs/mount.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-09-19 13:09:28 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2019-09-19 13:09:28 -0700
commitc9fe5630dae1df2328d82042602e2c4d1add8d57 (patch)
tree7429c9a2f36fc8b1410cfebe45762cbc9b5d84b8 /fs/configfs/mount.c
parent7e3d2c8210e67ebff472a0b371bb0efb4236ef52 (diff)
parente9c03af21cc7e5723d4f1e90fe45d2cdccb70dc7 (diff)
downloadlinux-c9fe5630dae1df2328d82042602e2c4d1add8d57.tar.gz
linux-c9fe5630dae1df2328d82042602e2c4d1add8d57.tar.bz2
linux-c9fe5630dae1df2328d82042602e2c4d1add8d57.zip
Merge tag 'configfs-for-5.4' of git://git.infradead.org/users/hch/configfs
Pull configfs updates from Christoph Hellwig: - fix a symlink deadlock (Al Viro) - various cleanups (Al Viro, me) * tag 'configfs-for-5.4' of git://git.infradead.org/users/hch/configfs: configfs: calculate the symlink target only once configfs: make configfs_create() return inode configfs: factor dirent removal into helpers configfs: fix a deadlock in configfs_symlink()
Diffstat (limited to 'fs/configfs/mount.c')
-rw-r--r--fs/configfs/mount.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/configfs/mount.c b/fs/configfs/mount.c
index 55438dd58189..0c6e8cf61953 100644
--- a/fs/configfs/mount.c
+++ b/fs/configfs/mount.c
@@ -28,9 +28,18 @@ static struct vfsmount *configfs_mount = NULL;
struct kmem_cache *configfs_dir_cachep;
static int configfs_mnt_count = 0;
+
+static void configfs_free_inode(struct inode *inode)
+{
+ if (S_ISLNK(inode->i_mode))
+ kfree(inode->i_link);
+ free_inode_nonrcu(inode);
+}
+
static const struct super_operations configfs_ops = {
.statfs = simple_statfs,
.drop_inode = generic_delete_inode,
+ .free_inode = configfs_free_inode,
};
static struct config_group configfs_root_group = {