From f641b364c200762eb35e78607efb6d4dbbf9906f Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Mon, 10 Mar 2025 20:53:19 -0600 Subject: [PATCH] LU-17000 misc: avoid memory leaks in error handling Fix wrong GOTO() label "out_free:" instead of "out_record_free:". Quiet false positive for leak in krb5_make_checksum(). Since "req == NULL" is never returned by cfs_crypto_hash_init(), then cfs_crypto_hash_final() is always called. Coverity is confused. CoverityID: 440607 ("Resource leak") CoverityID: 457047 ("Resource leak") Test-Parameters: trivial Fixes: 11eef3f735 ("LU-10499 pcc: get PCC state for file without opening") Fixes: 553d93361d ("LU-8602 gss: get rid of cfs_crypto_hash_desc") Signed-off-by: Andreas Dilger Change-Id: I725921ad89534b8ff2d8bcd526fceca3fcd90d04 Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/58362 Reviewed-by: Oleg Drokin Reviewed-by: Arshad Hussain Reviewed-by: Timothy Day Tested-by: jenkins Tested-by: Maloo --- lustre/llite/dir.c | 2 +- lustre/ptlrpc/gss/gss_krb5_mech.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lustre/llite/dir.c b/lustre/llite/dir.c index 1479223..f762656 100644 --- a/lustre/llite/dir.c +++ b/lustre/llite/dir.c @@ -2816,7 +2816,7 @@ out_ladvise: RETURN(-ENOMEM); if (copy_from_user(state, ustate, sizeof(*state))) - GOTO(out_free, rc = -EFAULT); + GOTO(out_state_free, rc = -EFAULT); name = state->pccs_path; namelen = strlen(name); diff --git a/lustre/ptlrpc/gss/gss_krb5_mech.c b/lustre/ptlrpc/gss/gss_krb5_mech.c index 04a1eb9..4e03eea 100644 --- a/lustre/ptlrpc/gss/gss_krb5_mech.c +++ b/lustre/ptlrpc/gss/gss_krb5_mech.c @@ -469,8 +469,7 @@ __s32 krb5_make_checksum(__u32 enctype, } out_free_hash: - if (req) - cfs_crypto_hash_final(req, cksum->data, &cksum->len); + cfs_crypto_hash_final(req, cksum->data, &cksum->len); out_no_hash: return rc ? GSS_S_FAILURE : GSS_S_COMPLETE; } -- 1.8.3.1