diff options
author | Paul Moore <paul@paul-moore.com> | 2024-01-18 14:10:17 -0500 |
---|---|---|
committer | Paul Moore <paul@paul-moore.com> | 2024-01-18 14:13:42 -0500 |
commit | 05d09fd5835a03cf32d24aa25805e1e9dcd7e6df (patch) | |
tree | 5b015e17c0999fd272e57689c5c873d7cd87e916 | |
parent | bbf5a1d0e5d0fb3bdf90205aa872636122692a50 (diff) | |
download | selinux-dev-staging.tar.gz |
selinux: reduce the object class calculations at inode init timedev-staging
We only need to call inode_mode_to_security_class() once in
selinux_inode_init_security().
Signed-off-by: Paul Moore <paul@paul-moore.com>
-rw-r--r-- | security/selinux/hooks.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 7c69ce62c1069e..9e59f9c80ca8fd 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -2920,23 +2920,22 @@ static int selinux_inode_init_security(struct inode *inode, struct inode *dir, struct superblock_security_struct *sbsec; struct xattr *xattr = lsm_get_xattr_slot(xattrs, xattr_count); u32 newsid, clen; + u16 newsclass; int rc; char *context; sbsec = selinux_superblock(dir->i_sb); newsid = tsec->create_sid; - - rc = selinux_determine_inode_label(tsec, dir, qstr, - inode_mode_to_security_class(inode->i_mode), - &newsid); + newsclass = inode_mode_to_security_class(inode->i_mode); + rc = selinux_determine_inode_label(tsec, dir, qstr, newsclass, &newsid); if (rc) return rc; /* Possibly defer initialization to selinux_complete_init. */ if (sbsec->flags & SE_SBINITIALIZED) { struct inode_security_struct *isec = selinux_inode(inode); - isec->sclass = inode_mode_to_security_class(inode->i_mode); + isec->sclass = newsclass; isec->sid = newsid; isec->initialized = LABEL_INITIALIZED; } |