address peer review: typography in linuxkm/linuxkm_memory.c, typography, clarity, and efficiency in wolfcrypt/src/sha256.c and wolfcrypt/src/sha512.c.

This commit is contained in:
Daniel Pouzzner
2024-04-29 14:02:44 -05:00
parent 393bf4a8e2
commit bb4c2cbad6
3 changed files with 85 additions and 104 deletions

View File

@@ -237,9 +237,7 @@ static struct wc_thread_fpu_count_ent *wc_linuxkm_fpu_state_assoc(int create_p)
* this is not thread-safe and doesn't need to be. * this is not thread-safe and doesn't need to be.
*/ */
int ret = allocate_wolfcrypt_linuxkm_fpu_states(); int ret = allocate_wolfcrypt_linuxkm_fpu_states();
if (ret == 0) { if (ret != 0)
}
else
#endif #endif
{ {
if (_warned_on_null == 0) { if (_warned_on_null == 0) {
@@ -307,9 +305,7 @@ static struct wc_thread_fpu_count_ent *wc_linuxkm_fpu_state_assoc_unlikely(int c
* this is not thread-safe and doesn't need to be. * this is not thread-safe and doesn't need to be.
*/ */
int ret = allocate_wolfcrypt_linuxkm_fpu_states(); int ret = allocate_wolfcrypt_linuxkm_fpu_states();
if (ret == 0) { if (ret != 0)
}
else
#endif #endif
{ {
if (_warned_on_null == 0) { if (_warned_on_null == 0) {
@@ -458,7 +454,6 @@ WARN_UNUSED_RESULT int can_save_vector_registers_x86(void)
return 0; return 0;
else if (test_thread_flag(TIF_NEED_FPU_LOAD)) else if (test_thread_flag(TIF_NEED_FPU_LOAD))
return 1; return 1;
else
return 0; return 0;
} }

View File

@@ -232,14 +232,14 @@ on the specific device platform.
(!defined(WOLFSSL_HAVE_PSA) || defined(WOLFSSL_PSA_NO_HASH)) && \ (!defined(WOLFSSL_HAVE_PSA) || defined(WOLFSSL_PSA_NO_HASH)) && \
!defined(WOLFSSL_RENESAS_RX64_HASH) !defined(WOLFSSL_RENESAS_RX64_HASH)
#if defined(WOLFSSL_X86_64_BUILD) && defined(USE_INTEL_SPEEDUP) && (defined(HAVE_INTEL_AVX1) || defined(HAVE_INTEL_AVX2)) #if defined(WOLFSSL_X86_64_BUILD) && defined(USE_INTEL_SPEEDUP) && \
static void Sha256_SetTransform( (defined(HAVE_INTEL_AVX1) || defined(HAVE_INTEL_AVX2))
#ifdef WC_C_DYNAMIC_FALLBACK #ifdef WC_C_DYNAMIC_FALLBACK
int *sha_method #define SHA256_SETTRANSFORM_ARGS int *sha_method
#else #else
void #define SHA256_SETTRANSFORM_ARGS void
#endif #endif
); static void Sha256_SetTransform(SHA256_SETTRANSFORM_ARGS);
#endif #endif
static int InitSha256(wc_Sha256* sha256) static int InitSha256(wc_Sha256* sha256)
@@ -266,7 +266,8 @@ static int InitSha256(wc_Sha256* sha256)
sha256->used = 0; sha256->used = 0;
#endif #endif
#if defined(WOLFSSL_X86_64_BUILD) && defined(USE_INTEL_SPEEDUP) && (defined(HAVE_INTEL_AVX1) || defined(HAVE_INTEL_AVX2)) #if defined(WOLFSSL_X86_64_BUILD) && defined(USE_INTEL_SPEEDUP) && \
(defined(HAVE_INTEL_AVX1) || defined(HAVE_INTEL_AVX2))
/* choose best Transform function under this runtime environment */ /* choose best Transform function under this runtime environment */
#ifdef WC_C_DYNAMIC_FALLBACK #ifdef WC_C_DYNAMIC_FALLBACK
sha256->sha_method = 0; sha256->sha_method = 0;
@@ -394,6 +395,8 @@ static int InitSha256(wc_Sha256* sha256)
} /* extern "C" */ } /* extern "C" */
#endif #endif
static word32 intel_flags = 0;
#if defined(WC_C_DYNAMIC_FALLBACK) && !defined(WC_NO_INTERNAL_FUNCTION_POINTERS) #if defined(WC_C_DYNAMIC_FALLBACK) && !defined(WC_NO_INTERNAL_FUNCTION_POINTERS)
#define WC_NO_INTERNAL_FUNCTION_POINTERS #define WC_NO_INTERNAL_FUNCTION_POINTERS
#endif #endif
@@ -405,34 +408,27 @@ static int InitSha256(wc_Sha256* sha256)
SHA256_C }; SHA256_C };
#ifndef WC_C_DYNAMIC_FALLBACK #ifndef WC_C_DYNAMIC_FALLBACK
static word32 intel_flags;
static enum sha_methods sha_method = SHA256_UNSET; static enum sha_methods sha_method = SHA256_UNSET;
#endif #endif
static void Sha256_SetTransform( static void Sha256_SetTransform(SHA256_SETTRANSFORM_ARGS)
#ifdef WC_C_DYNAMIC_FALLBACK
int *sha_method
#else
void
#endif
)
{ {
#ifdef WC_C_DYNAMIC_FALLBACK #ifdef WC_C_DYNAMIC_FALLBACK
#define SHA_METHOD (*sha_method) #define SHA_METHOD (*sha_method)
word32 intel_flags; #else
#else
#define SHA_METHOD sha_method #define SHA_METHOD sha_method
#endif #endif
if (SHA_METHOD != SHA256_UNSET) if (SHA_METHOD != SHA256_UNSET)
return; return;
#ifdef WC_C_DYNAMIC_FALLBACK #ifdef WC_C_DYNAMIC_FALLBACK
if (! CAN_SAVE_VECTOR_REGISTERS()) { if (! CAN_SAVE_VECTOR_REGISTERS()) {
SHA_METHOD = SHA256_C; SHA_METHOD = SHA256_C;
return; return;
} }
#endif #endif
if (intel_flags == 0)
intel_flags = cpuid_get_flags(); intel_flags = cpuid_get_flags();
if (IS_INTEL_SHA(intel_flags)) { if (IS_INTEL_SHA(intel_flags)) {
@@ -478,15 +474,15 @@ static int InitSha256(wc_Sha256* sha256)
{ {
SHA_METHOD = SHA256_C; SHA_METHOD = SHA256_C;
} }
#undef SHA_METHOD #undef SHA_METHOD
} }
static WC_INLINE int inline_XTRANSFORM(wc_Sha256* S, const byte* D) { static WC_INLINE int inline_XTRANSFORM(wc_Sha256* S, const byte* D) {
#ifdef WC_C_DYNAMIC_FALLBACK #ifdef WC_C_DYNAMIC_FALLBACK
#define SHA_METHOD (S->sha_method) #define SHA_METHOD (S->sha_method)
#else #else
#define SHA_METHOD sha_method #define SHA_METHOD sha_method
#endif #endif
int ret; int ret;
if (SHA_METHOD == SHA256_C) if (SHA_METHOD == SHA256_C)
@@ -516,16 +512,16 @@ static int InitSha256(wc_Sha256* sha256)
} }
RESTORE_VECTOR_REGISTERS(); RESTORE_VECTOR_REGISTERS();
return ret; return ret;
#undef SHA_METHOD #undef SHA_METHOD
} }
#define XTRANSFORM(...) inline_XTRANSFORM(__VA_ARGS__) #define XTRANSFORM(...) inline_XTRANSFORM(__VA_ARGS__)
static WC_INLINE int inline_XTRANSFORM_LEN(wc_Sha256* S, const byte* D, word32 L) { static WC_INLINE int inline_XTRANSFORM_LEN(wc_Sha256* S, const byte* D, word32 L) {
#ifdef WC_C_DYNAMIC_FALLBACK #ifdef WC_C_DYNAMIC_FALLBACK
#define SHA_METHOD (S->sha_method) #define SHA_METHOD (S->sha_method)
#else #else
#define SHA_METHOD sha_method #define SHA_METHOD sha_method
#endif #endif
int ret; int ret;
SAVE_VECTOR_REGISTERS(return _svr_ret;); SAVE_VECTOR_REGISTERS(return _svr_ret;);
switch (SHA_METHOD) { switch (SHA_METHOD) {
@@ -552,7 +548,7 @@ static int InitSha256(wc_Sha256* sha256)
} }
RESTORE_VECTOR_REGISTERS(); RESTORE_VECTOR_REGISTERS();
return ret; return ret;
#undef SHA_METHOD #undef SHA_METHOD
} }
#define XTRANSFORM_LEN(...) inline_XTRANSFORM_LEN(__VA_ARGS__) #define XTRANSFORM_LEN(...) inline_XTRANSFORM_LEN(__VA_ARGS__)
@@ -568,36 +564,34 @@ static int InitSha256(wc_Sha256* sha256)
static WC_INLINE int inline_XTRANSFORM(wc_Sha256* S, const byte* D) { static WC_INLINE int inline_XTRANSFORM(wc_Sha256* S, const byte* D) {
int ret; int ret;
#ifdef WOLFSSL_LINUXKM #ifdef WOLFSSL_LINUXKM
if (Transform_Sha256_is_vectorized) if (Transform_Sha256_is_vectorized)
SAVE_VECTOR_REGISTERS(return _svr_ret;); SAVE_VECTOR_REGISTERS(return _svr_ret;);
#endif #endif
ret = (*Transform_Sha256_p)(S, D); ret = (*Transform_Sha256_p)(S, D);
#ifdef WOLFSSL_LINUXKM #ifdef WOLFSSL_LINUXKM
if (Transform_Sha256_is_vectorized) if (Transform_Sha256_is_vectorized)
RESTORE_VECTOR_REGISTERS(); RESTORE_VECTOR_REGISTERS();
#endif #endif
return ret; return ret;
} }
#define XTRANSFORM(...) inline_XTRANSFORM(__VA_ARGS__) #define XTRANSFORM(...) inline_XTRANSFORM(__VA_ARGS__)
static WC_INLINE int inline_XTRANSFORM_LEN(wc_Sha256* S, const byte* D, word32 L) { static WC_INLINE int inline_XTRANSFORM_LEN(wc_Sha256* S, const byte* D, word32 L) {
int ret; int ret;
#ifdef WOLFSSL_LINUXKM #ifdef WOLFSSL_LINUXKM
if (Transform_Sha256_is_vectorized) if (Transform_Sha256_is_vectorized)
SAVE_VECTOR_REGISTERS(return _svr_ret;); SAVE_VECTOR_REGISTERS(return _svr_ret;);
#endif #endif
ret = (*Transform_Sha256_Len_p)(S, D, L); ret = (*Transform_Sha256_Len_p)(S, D, L);
#ifdef WOLFSSL_LINUXKM #ifdef WOLFSSL_LINUXKM
if (Transform_Sha256_is_vectorized) if (Transform_Sha256_is_vectorized)
RESTORE_VECTOR_REGISTERS(); RESTORE_VECTOR_REGISTERS();
#endif #endif
return ret; return ret;
} }
#define XTRANSFORM_LEN(...) inline_XTRANSFORM_LEN(__VA_ARGS__) #define XTRANSFORM_LEN(...) inline_XTRANSFORM_LEN(__VA_ARGS__)
static word32 intel_flags;
static void Sha256_SetTransform(void) static void Sha256_SetTransform(void)
{ {
@@ -1958,18 +1952,18 @@ static int InitSha256(wc_Sha256* sha256)
sha224->loLen = 0; sha224->loLen = 0;
sha224->hiLen = 0; sha224->hiLen = 0;
#ifdef WC_C_DYNAMIC_FALLBACK #ifdef WC_C_DYNAMIC_FALLBACK
sha224->sha_method = 0; sha224->sha_method = 0;
#endif #endif
#if defined(WOLFSSL_X86_64_BUILD) && defined(USE_INTEL_SPEEDUP) && \ #if defined(WOLFSSL_X86_64_BUILD) && defined(USE_INTEL_SPEEDUP) && \
(defined(HAVE_INTEL_AVX1) || defined(HAVE_INTEL_AVX2)) (defined(HAVE_INTEL_AVX1) || defined(HAVE_INTEL_AVX2))
/* choose best Transform function under this runtime environment */ /* choose best Transform function under this runtime environment */
#ifdef WC_C_DYNAMIC_FALLBACK #ifdef WC_C_DYNAMIC_FALLBACK
Sha256_SetTransform(&sha224->sha_method); Sha256_SetTransform(&sha224->sha_method);
#else #else
Sha256_SetTransform(); Sha256_SetTransform();
#endif #endif
#endif #endif
#ifdef WOLFSSL_HASH_FLAGS #ifdef WOLFSSL_HASH_FLAGS
sha224->flags = 0; sha224->flags = 0;

View File

@@ -207,13 +207,12 @@
#if defined(WOLFSSL_X86_64_BUILD) && defined(USE_INTEL_SPEEDUP) && \ #if defined(WOLFSSL_X86_64_BUILD) && defined(USE_INTEL_SPEEDUP) && \
(defined(HAVE_INTEL_AVX1) || defined(HAVE_INTEL_AVX2)) (defined(HAVE_INTEL_AVX1) || defined(HAVE_INTEL_AVX2))
static void Sha512_SetTransform(
#ifdef WC_C_DYNAMIC_FALLBACK #ifdef WC_C_DYNAMIC_FALLBACK
int *sha_method #define SHA512_SETTRANSFORM_ARGS int *sha_method
#else #else
void #define SHA512_SETTRANSFORM_ARGS void
#endif #endif
); static void Sha512_SetTransform(SHA512_SETTRANSFORM_ARGS);
#endif #endif
static int InitSha512(wc_Sha512* sha512) static int InitSha512(wc_Sha512* sha512)
@@ -465,6 +464,8 @@ static int InitSha512_256(wc_Sha512* sha512)
} /* extern "C" */ } /* extern "C" */
#endif #endif
static word32 intel_flags = 0;
#if defined(WC_C_DYNAMIC_FALLBACK) && !defined(WC_NO_INTERNAL_FUNCTION_POINTERS) #if defined(WC_C_DYNAMIC_FALLBACK) && !defined(WC_NO_INTERNAL_FUNCTION_POINTERS)
#define WC_NO_INTERNAL_FUNCTION_POINTERS #define WC_NO_INTERNAL_FUNCTION_POINTERS
#endif #endif
@@ -478,33 +479,26 @@ static int InitSha512_256(wc_Sha512* sha512)
#ifndef WC_C_DYNAMIC_FALLBACK #ifndef WC_C_DYNAMIC_FALLBACK
static enum sha_methods sha_method = SHA512_UNSET; static enum sha_methods sha_method = SHA512_UNSET;
static word32 intel_flags;
#endif #endif
static void Sha512_SetTransform( static void Sha512_SetTransform(SHA512_SETTRANSFORM_ARGS)
#ifdef WC_C_DYNAMIC_FALLBACK
int *sha_method
#else
void
#endif
)
{ {
#ifdef WC_C_DYNAMIC_FALLBACK #ifdef WC_C_DYNAMIC_FALLBACK
#define SHA_METHOD (*sha_method) #define SHA_METHOD (*sha_method)
word32 intel_flags; #else
#else
#define SHA_METHOD sha_method #define SHA_METHOD sha_method
#endif #endif
if (SHA_METHOD != SHA512_UNSET) if (SHA_METHOD != SHA512_UNSET)
return; return;
#ifdef WC_C_DYNAMIC_FALLBACK #ifdef WC_C_DYNAMIC_FALLBACK
if (! CAN_SAVE_VECTOR_REGISTERS()) { if (! CAN_SAVE_VECTOR_REGISTERS()) {
SHA_METHOD = SHA512_C; SHA_METHOD = SHA512_C;
return; return;
} }
#endif #endif
if (intel_flags == 0)
intel_flags = cpuid_get_flags(); intel_flags = cpuid_get_flags();
#if defined(HAVE_INTEL_AVX2) #if defined(HAVE_INTEL_AVX2)
@@ -538,15 +532,15 @@ static int InitSha512_256(wc_Sha512* sha512)
{ {
SHA_METHOD = SHA512_C; SHA_METHOD = SHA512_C;
} }
#undef SHA_METHOD #undef SHA_METHOD
} }
static WC_INLINE int Transform_Sha512(wc_Sha512 *sha512) { static WC_INLINE int Transform_Sha512(wc_Sha512 *sha512) {
#ifdef WC_C_DYNAMIC_FALLBACK #ifdef WC_C_DYNAMIC_FALLBACK
#define SHA_METHOD (sha512->sha_method) #define SHA_METHOD (sha512->sha_method)
#else #else
#define SHA_METHOD sha_method #define SHA_METHOD sha_method
#endif #endif
int ret; int ret;
if (SHA_METHOD == SHA512_C) if (SHA_METHOD == SHA512_C)
return _Transform_Sha512(sha512); return _Transform_Sha512(sha512);
@@ -572,15 +566,15 @@ static int InitSha512_256(wc_Sha512* sha512)
} }
RESTORE_VECTOR_REGISTERS(); RESTORE_VECTOR_REGISTERS();
return ret; return ret;
#undef SHA_METHOD #undef SHA_METHOD
} }
static WC_INLINE int Transform_Sha512_Len(wc_Sha512 *sha512, word32 len) { static WC_INLINE int Transform_Sha512_Len(wc_Sha512 *sha512, word32 len) {
#ifdef WC_C_DYNAMIC_FALLBACK #ifdef WC_C_DYNAMIC_FALLBACK
#define SHA_METHOD (sha512->sha_method) #define SHA_METHOD (sha512->sha_method)
#else #else
#define SHA_METHOD sha_method #define SHA_METHOD sha_method
#endif #endif
int ret; int ret;
SAVE_VECTOR_REGISTERS(return _svr_ret;); SAVE_VECTOR_REGISTERS(return _svr_ret;);
switch (SHA_METHOD) { switch (SHA_METHOD) {
@@ -604,7 +598,7 @@ static int InitSha512_256(wc_Sha512* sha512)
} }
RESTORE_VECTOR_REGISTERS(); RESTORE_VECTOR_REGISTERS();
return ret; return ret;
#undef SHA_METHOD #undef SHA_METHOD
} }
#else /* !WC_NO_INTERNAL_FUNCTION_POINTERS */ #else /* !WC_NO_INTERNAL_FUNCTION_POINTERS */
@@ -616,33 +610,31 @@ static int InitSha512_256(wc_Sha512* sha512)
static WC_INLINE int Transform_Sha512(wc_Sha512 *sha512) { static WC_INLINE int Transform_Sha512(wc_Sha512 *sha512) {
int ret; int ret;
#ifdef WOLFSSL_LINUXKM #ifdef WOLFSSL_LINUXKM
if (Transform_Sha512_is_vectorized) if (Transform_Sha512_is_vectorized)
SAVE_VECTOR_REGISTERS(return _svr_ret;); SAVE_VECTOR_REGISTERS(return _svr_ret;);
#endif #endif
ret = (*Transform_Sha512_p)(sha512); ret = (*Transform_Sha512_p)(sha512);
#ifdef WOLFSSL_LINUXKM #ifdef WOLFSSL_LINUXKM
if (Transform_Sha512_is_vectorized) if (Transform_Sha512_is_vectorized)
RESTORE_VECTOR_REGISTERS(); RESTORE_VECTOR_REGISTERS();
#endif #endif
return ret; return ret;
} }
static WC_INLINE int Transform_Sha512_Len(wc_Sha512 *sha512, word32 len) { static WC_INLINE int Transform_Sha512_Len(wc_Sha512 *sha512, word32 len) {
int ret; int ret;
#ifdef WOLFSSL_LINUXKM #ifdef WOLFSSL_LINUXKM
if (Transform_Sha512_is_vectorized) if (Transform_Sha512_is_vectorized)
SAVE_VECTOR_REGISTERS(return _svr_ret;); SAVE_VECTOR_REGISTERS(return _svr_ret;);
#endif #endif
ret = (*Transform_Sha512_Len_p)(sha512, len); ret = (*Transform_Sha512_Len_p)(sha512, len);
#ifdef WOLFSSL_LINUXKM #ifdef WOLFSSL_LINUXKM
if (Transform_Sha512_is_vectorized) if (Transform_Sha512_is_vectorized)
RESTORE_VECTOR_REGISTERS(); RESTORE_VECTOR_REGISTERS();
#endif #endif
return ret; return ret;
} }
static word32 intel_flags;
static void Sha512_SetTransform(void) static void Sha512_SetTransform(void)
{ {
if (transform_check) if (transform_check)