securityfs: use kstrdup_const() to manage symlink targets

Since 'target' argument of 'securityfs_create_symlink()' is (for
now at least) a compile-time constant, it may be reasonable to
use 'kstrdup_const()' / 'kree_const()' to manage 'i_link' member
of the corresponding inode in attempt to reuse .rodata instance
rather than making a copy.

Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
Signed-off-by: Paul Moore <paul@paul-moore.com>
This commit is contained in:
Dmitry Antipov
2026-03-17 17:11:35 +03:00
committed by Paul Moore
parent fe3c03b84a
commit d1a0919586

View File

@@ -30,7 +30,7 @@ static int mount_count;
static void securityfs_free_inode(struct inode *inode)
{
if (S_ISLNK(inode->i_mode))
kfree(inode->i_link);
kfree_const(inode->i_link);
free_inode_nonrcu(inode);
}
@@ -258,17 +258,17 @@ struct dentry *securityfs_create_symlink(const char *name,
const struct inode_operations *iops)
{
struct dentry *dent;
char *link = NULL;
const char *link = NULL;
if (target) {
link = kstrdup(target, GFP_KERNEL);
link = kstrdup_const(target, GFP_KERNEL);
if (!link)
return ERR_PTR(-ENOMEM);
}
dent = securityfs_create_dentry(name, S_IFLNK | 0444, parent,
link, NULL, iops);
(void *)link, NULL, iops);
if (IS_ERR(dent))
kfree(link);
kfree_const(link);
return dent;
}