From: Dmitry Antipov Date: Tue, 17 Mar 2026 14:11:35 +0000 (+0300) Subject: securityfs: use kstrdup_const() to manage symlink targets X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d1a09195866890ed4b407bf17879d2f7fa72d9a7;p=thirdparty%2Fkernel%2Flinux.git 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 Signed-off-by: Paul Moore --- diff --git a/security/inode.c b/security/inode.c index 81fb5d6dd33e5..0804023676741 100644 --- a/security/inode.c +++ b/security/inode.c @@ -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; }