Skip to contentSkip to conversation

lib/crypto: tests: Fix KMSAN warning in test_sha256_finup_2x()

PATCH Applied Eric Biggers 2 participants 3 messages Nov 21, 2025

Subsystems (3)
lore
Share & tools
lore

Eric Biggers

author maintainer
#0 lore raw

PATCH 1/1 lib/crypto: tests: Fix KMSAN warning in test_sha256_finup_2x()

Fully initialize *ctx, including the buf field which sha256_init() doesn't initialize, to avoid a KMSAN warning when comparing *ctx to orig_ctx. This KMSAN warning slipped in while KMSAN was not working reliably due to a stackdepot bug, which has now been fixed.

Fixes 6733968be7cb ("lib/crypto: tests: Add tests and benchmark for sha256_finup_2x()")
---
 lib/crypto/tests/sha256_kunit.c | 1 +
 1 file changed, 1 insertion(+)
lib/crypto/tests/sha256_kunit.c +1 -0
index dcedfca06df6..5dccdee79693 100644
@@ -66,10 +66,11 @@ static void test_sha256_finup_2x(struct kunit *test)
 	ctx = alloc_guarded_buf(test, sizeof(*ctx));
 
 	rand_bytes(data1_buf, max_data_len);
 	rand_bytes(data2_buf, max_data_len);
 	rand_bytes(salt, sizeof(salt));
+	memset(ctx, 0, sizeof(*ctx));
 
 	for (size_t i = 0; i < 500; i++) {
 		size_t salt_len = rand_length(sizeof(salt));
 		size_t data_len = rand_length(max_data_len);
 		const u8 *data1 = data1_buf + max_data_len - data_len;

base-commit: 10a1140107e0b98bd67d37ae7af72989dd7df00b

Signature · 1 line
2.51.2
maintainer Acked-by on v1 1/1
#1 lore raw
Quoted 9 lines · Eric Biggers

Fully initialize *ctx, including the buf field which sha256_init() doesn't initialize, to avoid a KMSAN warning when comparing *ctx to orig_ctx. This KMSAN warning slipped in while KMSAN was not working reliably due to a stackdepot bug, which has now been fixed.

Fixes 6733968be7cb ("lib/crypto: tests: Add tests and benchmark for sha256_finup_2x()")
Quoted 25 lines
---
 lib/crypto/tests/sha256_kunit.c | 1 +
 1 file changed, 1 insertion(+)
lib/crypto/tests/sha256_kunit.c +1 -0
index dcedfca06df6..5dccdee79693 100644
@@ -66,10 +66,11 @@ static void test_sha256_finup_2x(struct kunit *test)
        ctx = alloc_guarded_buf(test, sizeof(*ctx));
 
        rand_bytes(data1_buf, max_data_len);
        rand_bytes(data2_buf, max_data_len);
        rand_bytes(salt, sizeof(salt));
+       memset(ctx, 0, sizeof(*ctx));
 
        for (size_t i = 0; i < 500; i++) {
                size_t salt_len = rand_length(sizeof(salt));
                size_t data_len = rand_length(max_data_len);
                const u8 *data1 = data1_buf + max_data_len - data_len;

base-commit: 10a1140107e0b98bd67d37ae7af72989dd7df00b --
2.51.2

author maintainer Applied
#2 lore raw
In reply to Eric Biggers
Quoted 5 lines · Eric Biggers

Fully initialize *ctx, including the buf field which sha256_init() doesn't initialize, to avoid a KMSAN warning when comparing *ctx to orig_ctx. This KMSAN warning slipped in while KMSAN was not working reliably due to a stackdepot bug, which has now been fixed.

Quoted 7 lines
Fixes 6733968be7cb ("lib/crypto: tests: Add tests and benchmark for sha256_finup_2x()")
---
 lib/crypto/tests/sha256_kunit.c | 1 +
 1 file changed, 1 insertion(+)

Applied to https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git/log/?h=libcrypto-fixes
(I dropped the Cc stable. I'll just send it in for v6.18-rc7 instead.)

- Eric