lkml.org 
[lkml]   [2014]   [Apr]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] crypto: x86/sha1: fix coverity CID 1195603
Date
Coverity detected possible use of uninitialized pointer when printing info
message during module load. While this is higly unlikely to cause any troubles
simple change in sha1_ssse3_mod_init to make it look like sha256/512 init
function will fix this.

260
6. Condition sha1_transform_asm, taking true branch
261 if (sha1_transform_asm) {

CID 1195603 (#1 of 1): Uninitialized pointer read (UNINIT)
7. uninit_use_in_call: Using uninitialized value algo_name when calling printk.
262 pr_info("Using %s optimized SHA-1 implementation\n", algo_name);
263 return crypto_register_shash(&alg);
264 }

Reported-by: <scan-admin@coverity.com>
Signed-off-by: Milos Vyletel <milos.vyletel@gmail.com>
---
arch/x86/crypto/sha1_ssse3_glue.c | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/arch/x86/crypto/sha1_ssse3_glue.c b/arch/x86/crypto/sha1_ssse3_glue.c
index 74d16ef..5352196 100644
--- a/arch/x86/crypto/sha1_ssse3_glue.c
+++ b/arch/x86/crypto/sha1_ssse3_glue.c
@@ -235,31 +235,33 @@ static bool __init avx2_usable(void)

static int __init sha1_ssse3_mod_init(void)
{
- char *algo_name;
-
/* test for SSSE3 first */
- if (cpu_has_ssse3) {
+ if (cpu_has_ssse3)
sha1_transform_asm = sha1_transform_ssse3;
- algo_name = "SSSE3";
- }

#ifdef CONFIG_AS_AVX
/* allow AVX to override SSSE3, it's a little faster */
if (avx_usable()) {
sha1_transform_asm = sha1_transform_avx;
- algo_name = "AVX";
#ifdef CONFIG_AS_AVX2
/* allow AVX2 to override AVX, it's a little faster */
- if (avx2_usable()) {
+ if (avx2_usable())
sha1_transform_asm = sha1_apply_transform_avx2;
- algo_name = "AVX2";
- }
#endif
}
#endif

if (sha1_transform_asm) {
- pr_info("Using %s optimized SHA-1 implementation\n", algo_name);
+#ifdef CONFIG_AS_AVX
+ if (sha1_transform_asm == sha1_transform_avx)
+ pr_info("Using AVX optimized SHA-1 implementation\n");
+#ifdef CONFIG_AS_AVX2
+ else if (sha1_transform_asm == sha1_transform_avx2)
+ pr_info("Using AVX2 optimized SHA-1 implementation\n");
+#endif
+ else
+#endif
+ pr_info("Using SSSE3 optimized SHA-1 implementation\n");
return crypto_register_shash(&alg);
}
pr_info("Neither AVX nor AVX2 nor SSSE3 is available/usable.\n");
--
1.9.0


\
 
 \ /
  Last update: 2014-04-30 22:21    [W:0.315 / U:0.020 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site