From 4db884fd521efae9ebe59ed63a522bbb0b7ee5d6 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Mar 20 2024 01:32:34 +0000 Subject: SUNRPC: fix a memleak in gss_import_v2_context (git-fixes). --- diff --git a/patches.suse/SUNRPC-fix-a-memleak-in-gss_import_v2_context.patch b/patches.suse/SUNRPC-fix-a-memleak-in-gss_import_v2_context.patch new file mode 100644 index 0000000..fb08aa4 --- /dev/null +++ b/patches.suse/SUNRPC-fix-a-memleak-in-gss_import_v2_context.patch @@ -0,0 +1,56 @@ +From: Zhipeng Lu +Date: Sun, 24 Dec 2023 16:20:33 +0800 +Subject: [PATCH] SUNRPC: fix a memleak in gss_import_v2_context +Git-commit: e67b652d8e8591d3b1e569dbcdfcee15993e91fa +Patch-mainline: v6.9-rc1 +References: git-fixes + +The ctx->mech_used.data allocated by kmemdup is not freed in neither +gss_import_v2_context nor it only caller gss_krb5_import_sec_context, +which frees ctx on error. + +Thus, this patch reform the last call of gss_import_v2_context to the +gss_krb5_import_ctx_v2, preventing the memleak while keepping the return +formation. + +Fixes: 47d848077629 ("gss_krb5: handle new context format from gssd") +Signed-off-by: Zhipeng Lu +Reviewed-by: Jeff Layton +Signed-off-by: Chuck Lever +Acked-by: NeilBrown + +--- + net/sunrpc/auth_gss/gss_krb5_mech.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +--- a/net/sunrpc/auth_gss/gss_krb5_mech.c ++++ b/net/sunrpc/auth_gss/gss_krb5_mech.c +@@ -471,6 +471,7 @@ gss_import_v2_context(const void *p, con + u64 seq_send64; + int keylen; + u32 time32; ++ int ret; + + p = simple_get_bytes(p, end, &ctx->flags, sizeof(ctx->flags)); + if (IS_ERR(p)) +@@ -528,13 +529,17 @@ gss_import_v2_context(const void *p, con + + switch (ctx->enctype) { + case ENCTYPE_DES3_CBC_RAW: +- return context_derive_keys_des3(ctx, gfp_mask); ++ ret = context_derive_keys_des3(ctx, gfp_mask); ++ break; + case ENCTYPE_AES128_CTS_HMAC_SHA1_96: + case ENCTYPE_AES256_CTS_HMAC_SHA1_96: +- return context_derive_keys_new(ctx, gfp_mask); ++ ret = context_derive_keys_new(ctx, gfp_mask); ++ break; + default: +- return -EINVAL; ++ ret = -EINVAL; + } ++ if (ret) ++ kfree(ctx->mech_used.data); + + out_err: + return PTR_ERR(p); diff --git a/series.conf b/series.conf index cee9745..dcd1255 100644 --- a/series.conf +++ b/series.conf @@ -45586,6 +45586,7 @@ patches.suse/KVM-x86-Export-RFDS_NO-and-RFDS_CLEAR-to-guests.patch patches.suse/arm64-dts-allwinner-h6-Add-RX-DMA-channel-for-SPDIF.patch patches.suse/arm64-dts-imx8mm-venice-gw71xx-fix-USB-OTG-VBUS-2.patch + patches.suse/SUNRPC-fix-a-memleak-in-gss_import_v2_context.patch patches.suse/doc-guide-kernel-doc-tell-about-object-like-macros.patch patches.suse/wifi-b43-Stop-wake-correct-queue-in-DMA-Tx-path-when.patch patches.suse/wifi-b43-Stop-wake-correct-queue-in-PIO-Tx-path-when.patch