Use CRYPTO_API() etc. from include/crypto/api.h in preparation for compilation as part of support for FIPS 140 standalone modules. Generated using: ./fipsify.py --config CONFIG_CRYPTO_LIB_UTILS --source lib/crypto/memneq.c --header include/crypto/utils.h Signed-off-by: Vegard Nossum <vegard.nossum@xxxxxxxxxx> --- crypto/fips140-api.c | 11 +++++++++++ include/crypto/utils.h | 5 ++++- lib/crypto/memneq.c | 4 ++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/crypto/fips140-api.c b/crypto/fips140-api.c index 6c29b46631e4..16d0d8afebe7 100644 --- a/crypto/fips140-api.c +++ b/crypto/fips140-api.c @@ -49,3 +49,14 @@ DEFINE_CRYPTO_API_STUB(gf128mul_64k_bbe); #endif +/* + * lib/crypto/memneq.c + */ +#if !IS_BUILTIN(CONFIG_CRYPTO_LIB_UTILS) + +#include <crypto/utils.h> + +DEFINE_CRYPTO_API_STUB(__crypto_memneq); + +#endif + diff --git a/include/crypto/utils.h b/include/crypto/utils.h index 2594f45777b5..d7c3dae79138 100644 --- a/include/crypto/utils.h +++ b/include/crypto/utils.h @@ -7,6 +7,7 @@ #ifndef _CRYPTO_UTILS_H #define _CRYPTO_UTILS_H +#include <crypto/api.h> #include <linux/unaligned.h> #include <linux/compiler_attributes.h> #include <linux/types.h> @@ -53,7 +54,9 @@ static inline void crypto_xor_cpy(u8 *dst, const u8 *src1, const u8 *src2, } } -noinline unsigned long __crypto_memneq(const void *a, const void *b, size_t size); +DECLARE_CRYPTO_API(__crypto_memneq, unsigned long, + (const void *a, const void *b, size_t size), + (a, b, size)); /** * crypto_memneq - Compare two areas of memory without leaking diff --git a/lib/crypto/memneq.c b/lib/crypto/memneq.c index 44daacb8cb51..2ee1d7d71d49 100644 --- a/lib/crypto/memneq.c +++ b/lib/crypto/memneq.c @@ -161,7 +161,7 @@ static inline unsigned long __crypto_memneq_16(const void *a, const void *b) * not call this function directly, but should instead use * crypto_memneq defined in crypto/algapi.h. */ -noinline unsigned long __crypto_memneq(const void *a, const void *b, +unsigned long CRYPTO_API(__crypto_memneq)(const void *a, const void *b, size_t size) { switch (size) { @@ -171,4 +171,4 @@ noinline unsigned long __crypto_memneq(const void *a, const void *b, return __crypto_memneq_generic(a, b, size); } } -EXPORT_SYMBOL(__crypto_memneq); +DEFINE_CRYPTO_API(__crypto_memneq); -- 2.39.3