[PATCH 01/11] lib/crypto: aes: Provide a wrapper function for zeroizing crypto_aes_ctx

From: Thomas Huth

Date: Thu Aug 13 2026 - 09:56:52 EST


From: Thomas Huth <thuth@xxxxxxxxxx>

Several crypto drivers need to zeroize their local crypto_aes_ctx
structures after use to avoid leaking key material on the stack.
Currently some call sites do this with their own memzero_explicit()
call, which is error-prone since it is easy to miss a return path
(what already happened in some drivers). Some other call sites miss
to clear crypto_aes_ctx completely.

Provide an aes_zeroize_ctx() helper that can be used with __cleanup()
to automatically zeroize the context when it goes out of scope.

Signed-off-by: Thomas Huth <thuth@xxxxxxxxxx>
---
include/crypto/aes.h | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/include/crypto/aes.h b/include/crypto/aes.h
index 16fbfd93e2bd0..faf1d1b75a15f 100644
--- a/include/crypto/aes.h
+++ b/include/crypto/aes.h
@@ -8,6 +8,7 @@

#include <linux/types.h>
#include <linux/crypto.h>
+#include <linux/string.h>

#define AES_MIN_KEY_SIZE 16
#define AES_MAX_KEY_SIZE 32
@@ -125,6 +126,19 @@ struct crypto_aes_ctx {
u32 key_length;
};

+/**
+ * aes_zeroize_ctx - Clear a crypto_aes_ctx structure
+ * @ctx: The location of the context that should be zeroized
+ *
+ * This function explicitly fills the crypto_aes_ctx with zeroes. For
+ * example, use it with __cleanup() for local crypto_aes_ctx structures on
+ * the stack to avoid that their content is leaked when the context is left.
+ */
+static inline void aes_zeroize_ctx(struct crypto_aes_ctx *ctx)
+{
+ memzero_explicit(ctx, sizeof(*ctx));
+}
+
/*
* validate key length for AES algorithms
*/
--
2.55.0