]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
securityfs: don't pin dentries twice, once is enough...
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 9 May 2025 03:38:01 +0000 (23:38 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Aug 2025 14:22:40 +0000 (16:22 +0200)
[ Upstream commit 27cd1bf1240d482e4f02ca4f9812e748f3106e4f ]

incidentally, securityfs_recursive_remove() is broken without that -
it leaks dentries, since simple_recursive_removal() does not expect
anything of that sort.  It could be worked around by dput() in
remove_one() callback, but it's easier to just drop that double-get
stuff.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
security/inode.c

index 6c326939750d1a950f2482f352d738f56d5b341d..e6e07787eec9d9913a30e6ffb1f8c7dfe14369cc 100644 (file)
@@ -159,7 +159,6 @@ static struct dentry *securityfs_create_dentry(const char *name, umode_t mode,
                inode->i_fop = fops;
        }
        d_instantiate(dentry, inode);
-       dget(dentry);
        inode_unlock(dir);
        return dentry;
 
@@ -306,7 +305,6 @@ void securityfs_remove(struct dentry *dentry)
                        simple_rmdir(dir, dentry);
                else
                        simple_unlink(dir, dentry);
-               dput(dentry);
        }
        inode_unlock(dir);
        simple_release_fs(&mount, &mount_count);