diff options
author | Paul Moore <paul@paul-moore.com> | 2022-11-09 14:14:35 -0500 |
---|---|---|
committer | Paul Moore <paul@paul-moore.com> | 2022-11-18 17:07:03 -0500 |
commit | f6fbd8cbf3ed1915a7b957f2801f7c306a686c08 (patch) | |
tree | c72891942254302b6a455f09511c3b14f6c2a762 /security/integrity/ima/ima_appraise.c | |
parent | e68bfbd3b3c3a0ec3cf8c230996ad8cabe90322f (diff) | |
download | linux-stable-f6fbd8cbf3ed1915a7b957f2801f7c306a686c08.tar.gz linux-stable-f6fbd8cbf3ed1915a7b957f2801f7c306a686c08.tar.bz2 linux-stable-f6fbd8cbf3ed1915a7b957f2801f7c306a686c08.zip |
lsm,fs: fix vfs_getxattr_alloc() return type and caller error paths
The vfs_getxattr_alloc() function currently returns a ssize_t value
despite the fact that it only uses int values internally for return
values. Fix this by converting vfs_getxattr_alloc() to return an
int type and adjust the callers as necessary. As part of these
caller modifications, some of the callers are fixed to properly free
the xattr value buffer on both success and failure to ensure that
memory is not leaked in the failure case.
Reviewed-by: Serge Hallyn <serge@hallyn.com>
Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Diffstat (limited to 'security/integrity/ima/ima_appraise.c')
-rw-r--r-- | security/integrity/ima/ima_appraise.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/security/integrity/ima/ima_appraise.c b/security/integrity/ima/ima_appraise.c index 3e0fbbd99534..88ffb15ca0e2 100644 --- a/security/integrity/ima/ima_appraise.c +++ b/security/integrity/ima/ima_appraise.c @@ -221,12 +221,12 @@ enum hash_algo ima_get_hash_algo(const struct evm_ima_xattr_data *xattr_value, } int ima_read_xattr(struct dentry *dentry, - struct evm_ima_xattr_data **xattr_value) + struct evm_ima_xattr_data **xattr_value, int xattr_len) { - ssize_t ret; + int ret; ret = vfs_getxattr_alloc(&init_user_ns, dentry, XATTR_NAME_IMA, - (char **)xattr_value, 0, GFP_NOFS); + (char **)xattr_value, xattr_len, GFP_NOFS); if (ret == -EOPNOTSUPP) ret = 0; return ret; |