63af84cffe
Commit 63f46b45dda2 ("ANDROID: fips140: eliminate crypto-fips.a build step") made all fips140 source files other than fips140-module.c be compiled in the "fake built-in code" mode. This broke the fail_selftest and fail_integrity_check module parameters, as they are defined in fips140-eval-testing.c. Fix this by making fips140-eval-testing.c be compiled "normally", overriding fips140-defs.h. Bug: 188620248 Fixes: 63f46b45dda2 ("ANDROID: fips140: eliminate crypto-fips.a build step") Change-Id: Iebb70bdcbb698b92a7791fa7307e2325b1a9e4b6 Signed-off-by: Eric Biggers <ebiggers@google.com>
59 lines
2.6 KiB
C
59 lines
2.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright 2021 Google LLC
|
|
*
|
|
* This file is automatically included by all files built into fips140.ko, via
|
|
* the "-include" compiler flag.
|
|
*/
|
|
|
|
/*
|
|
* fips140.ko is built from various unmodified or minimally modified kernel
|
|
* source files, many of which are normally meant to be buildable into different
|
|
* modules themselves. That results in conflicting instances of module_init()
|
|
* and related macros such as MODULE_LICENSE().
|
|
*
|
|
* To solve that, we undefine MODULE to trick the kernel headers into thinking
|
|
* the code is being compiled as built-in. That causes module_init() and
|
|
* related macros to be expanded as they would be for built-in code; e.g.,
|
|
* module_init() adds the function to the .initcalls section of the binary.
|
|
*
|
|
* The .c files that contain the real module_init, module license, and module
|
|
* parameters for fips140.ko are then responsible for redefining MODULE. The
|
|
* real module_init executes all initcalls that were collected into .initcalls.
|
|
*/
|
|
#undef MODULE
|
|
|
|
/*
|
|
* Defining KBUILD_MODFILE is also required, since the kernel headers expect it
|
|
* to be defined when code that can be a module is compiled as built-in.
|
|
*/
|
|
#define KBUILD_MODFILE "crypto/fips140"
|
|
|
|
/*
|
|
* Disable symbol exports by default. fips140.ko includes various files that
|
|
* use EXPORT_SYMBOL*(), but it's unwanted to export any symbols from fips140.ko
|
|
* except where explicitly needed for FIPS certification reasons.
|
|
*/
|
|
#define __DISABLE_EXPORTS
|
|
|
|
/*
|
|
* Redirect all calls to algorithm registration functions to the wrapper
|
|
* functions defined within the module.
|
|
*/
|
|
#define aead_register_instance fips140_aead_register_instance
|
|
#define ahash_register_instance fips140_ahash_register_instance
|
|
#define crypto_register_aead fips140_crypto_register_aead
|
|
#define crypto_register_aeads fips140_crypto_register_aeads
|
|
#define crypto_register_ahash fips140_crypto_register_ahash
|
|
#define crypto_register_ahashes fips140_crypto_register_ahashes
|
|
#define crypto_register_alg fips140_crypto_register_alg
|
|
#define crypto_register_algs fips140_crypto_register_algs
|
|
#define crypto_register_rng fips140_crypto_register_rng
|
|
#define crypto_register_rngs fips140_crypto_register_rngs
|
|
#define crypto_register_shash fips140_crypto_register_shash
|
|
#define crypto_register_shashes fips140_crypto_register_shashes
|
|
#define crypto_register_skcipher fips140_crypto_register_skcipher
|
|
#define crypto_register_skciphers fips140_crypto_register_skciphers
|
|
#define shash_register_instance fips140_shash_register_instance
|
|
#define skcipher_register_instance fips140_skcipher_register_instance
|