On 10/21/2024 4:39 PM, Paul Moore wrote: > On Oct 14, 2024 Casey Schaufler <casey@xxxxxxxxxxxxxxxx> wrote: >> Replace the (secctx,seclen) pointer pair with a single lsm_context >> pointer to allow return of the LSM identifier along with the context >> and context length. This allows security_release_secctx() to know how >> to release the context. Callers have been modified to use or save the >> returned data from the new structure. >> >> Special care is taken in the NFS code, which uses the same data structure >> for its own copied labels as it does for the data which comes from >> security_dentry_init_security(). In the case of copied labels the data >> has to be freed, not released. >> >> The scaffolding funtion lsmcontext_init() is no longer needed and is >> removed. >> >> Signed-off-by: Casey Schaufler <casey@xxxxxxxxxxxxxxxx> >> Cc: ceph-devel@xxxxxxxxxxxxxxx >> Cc: linux-nfs@xxxxxxxxxxxxxxx >> --- >> fs/ceph/super.h | 3 +-- >> fs/ceph/xattr.c | 16 ++++++---------- >> fs/fuse/dir.c | 35 ++++++++++++++++++----------------- >> fs/nfs/dir.c | 2 +- >> fs/nfs/inode.c | 17 ++++++++++------- >> fs/nfs/internal.h | 8 +++++--- >> fs/nfs/nfs4proc.c | 22 +++++++++------------- >> fs/nfs/nfs4xdr.c | 22 ++++++++++++---------- >> include/linux/lsm_hook_defs.h | 2 +- >> include/linux/nfs4.h | 8 ++++---- >> include/linux/nfs_fs.h | 2 +- >> include/linux/security.h | 26 +++----------------------- >> security/security.c | 9 ++++----- >> security/selinux/hooks.c | 9 +++++---- >> 14 files changed, 80 insertions(+), 101 deletions(-) > .. > >> diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h >> index 039898d70954..47652d217d05 100644 >> --- a/include/linux/nfs_fs.h >> +++ b/include/linux/nfs_fs.h >> @@ -457,7 +457,7 @@ static inline void nfs4_label_free(struct nfs4_label *label) >> { >> #ifdef CONFIG_NFS_V4_SECURITY_LABEL >> if (label) { >> - kfree(label->label); >> + kfree(label->lsmctx.context); > Shouldn't this be a call to security_release_secctx() instead of a raw > kfree()? As mentioned in the description, the NFS data is a copy that NFS manages, so it does need to be freed, not released. > >> kfree(label); >> } >> #endif > -- > paul-moore.com >