lib/crypto: explicitly include <linux/export.h>
Subsystems (2)
Eric Biggers
maintainerPATCH v2 1/1 lib/crypto: explicitly include <linux/export.h>
From: Eric Biggers <[email protected]>
Fix build warnings with W=1 that started appearing after commit a934a57a42f6 ("scripts/misc-check: check missing #include <linux/export.h> when W=1").
While at it, also sort the include lists alphabetically. (Keep asm/irqflags.h last, as otherwise it doesn't build on alpha.)
This handles all of lib/crypto/, but not arch/*/lib/crypto/. The exports in arch/*/lib/crypto/ will go away when the code is properly integrated into lib/crypto/ as planned.
v2: keep asm/irqflags.h last, to avoid build error on alpha
(https://lore.kernel.org/all/[email protected]/)
--- lib/crypto/aes.c | 1 + lib/crypto/aescfb.c | 7 +++---- lib/crypto/aesgcm.c | 5 ++--- lib/crypto/arc4.c | 1 + lib/crypto/blake2s-generic.c | 9 +++++---- lib/crypto/blake2s.c | 9 +++++---- lib/crypto/chacha.c | 7 ++++--- lib/crypto/chacha20poly1305.c | 8 ++++---- lib/crypto/curve25519-generic.c | 1 + lib/crypto/des.c | 7 +++---- lib/crypto/gf128mul.c | 1 + lib/crypto/libchacha.c | 7 +++---- lib/crypto/memneq.c | 3 ++- lib/crypto/mpi/mpi-add.c | 2 ++ lib/crypto/mpi/mpi-bit.c | 2 ++ lib/crypto/mpi/mpi-cmp.c | 2 ++ lib/crypto/mpi/mpi-mul.c | 2 ++ lib/crypto/mpi/mpi-pow.c | 2 ++ lib/crypto/mpi/mpi-sub-ui.c | 2 ++ lib/crypto/mpi/mpicoder.c | 3 ++- lib/crypto/mpi/mpiutil.c | 2 ++ lib/crypto/poly1305-donna32.c | 3 ++- lib/crypto/poly1305-donna64.c | 3 ++- lib/crypto/poly1305-generic.c | 1 + lib/crypto/poly1305.c | 1 + lib/crypto/sha1.c | 6 +++--- lib/crypto/sha256-generic.c | 1 + lib/crypto/sha256.c | 1 + lib/crypto/sm3.c | 1 + lib/crypto/utils.c | 3 ++- 30 files changed, 65 insertions(+), 38 deletions(-)
lib/crypto/aes.c +1 -0
@@ -3,10 +3,11 @@* Copyright (C) 2017-2019 Linaro Ltd <[email protected]> */ #include <crypto/aes.h> #include <linux/crypto.h> +#include <linux/export.h> #include <linux/module.h> #include <linux/unaligned.h> /* * Emit the sbox as volatile const to prevent the compiler from doing
lib/crypto/aescfb.c +3 -4
@@ -3,15 +3,14 @@* Minimal library implementation of AES in CFB mode * * Copyright 2023 Google LLC */ -#include <linux/module.h> - -#include <crypto/algapi.h> #include <crypto/aes.h> - +#include <crypto/algapi.h> +#include <linux/export.h> +#include <linux/module.h> #include <asm/irqflags.h> static void aescfb_encrypt_block (const struct crypto_aes_ctx *ctx,void *dst,const void *src) {
lib/crypto/aesgcm.c +2 -3
@@ -3,16 +3,15 @@* Minimal library implementation of GCM * * Copyright 2022 Google LLC */ -#include <linux/module.h> -#include <crypto/algapi.h> #include <crypto/gcm.h> #include <crypto/ghash.h> - +#include <linux/export.h> +#include <linux/module.h> #include <asm/irqflags.h> static void aesgcm_encrypt_block (const struct crypto_aes_ctx *ctx,void *dst,const void *src) {
lib/crypto/arc4.c +1 -0
@@ -6,10 +6,11 @@* * Jon Oberheide <[email protected]> */ #include <crypto/arc4.h> +#include <linux/export.h> #include <linux/module.h> int arc4_setkey (struct arc4_ctx *ctx,const u8 *in_key,unsigned int key_len) {int i, j =0 , k =0 ;
lib/crypto/blake2s-generic.c +5 -4
@@ -7,15 +7,16 @@* Information: https://blake2.net/ * */ #include <crypto/internal/blake2s.h> -#include <linux/types.h> -#include <linux/string.h> -#include <linux/kernel.h> -#include <linux/init.h> #include <linux/bug.h> +#include <linux/export.h> +#include <linux/init.h> +#include <linux/kernel.h> +#include <linux/string.h> +#include <linux/types.h> #include <linux/unaligned.h> static const u8 blake2s_sigma[10 ][16 ] = { {0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 }, {14 ,10 ,4 ,8 ,9 ,15 ,13 ,6 ,1 ,12 ,0 ,2 ,11 ,7 ,5 ,3 },
lib/crypto/blake2s.c +5 -4
@@ -7,16 +7,17 @@* Information: https://blake2.net/ * */ #include <crypto/internal/blake2s.h> -#include <linux/types.h> -#include <linux/string.h> +#include <linux/bug.h> +#include <linux/export.h> +#include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> -#include <linux/init.h> -#include <linux/bug.h> +#include <linux/string.h> +#include <linux/types.h> static inline void blake2s_set_lastblock (struct blake2s_state *state) { state->f[0 ] =-1 ; }
lib/crypto/chacha.c +4 -3
@@ -3,17 +3,18 @@* The "hash function" used as the core of the ChaCha stream cipher (RFC7539) * * Copyright (C) 2015 Martin Willi */ +#include <crypto/chacha.h> +#include <linux/bitops.h> #include <linux/bug.h> -#include <linux/kernel.h> #include <linux/export.h> -#include <linux/bitops.h> +#include <linux/export.h> +#include <linux/kernel.h> #include <linux/string.h> #include <linux/unaligned.h> -#include <crypto/chacha.h> static void chacha_permute (struct chacha_state *state,int nrounds) {u32 *x = state->x;int i;
lib/crypto/chacha20poly1305.c +4 -4
@@ -5,20 +5,20 @@* This is an implementation of the ChaCha20Poly1305 AEAD construction. * * Information: https://tools.ietf.org/html/rfc8439 */ -#include <crypto/chacha20poly1305.h> #include <crypto/chacha.h> +#include <crypto/chacha20poly1305.h> #include <crypto/poly1305.h> #include <crypto/utils.h> - -#include <linux/unaligned.h> -#include <linux/kernel.h> +#include <linux/export.h> #include <linux/init.h> +#include <linux/kernel.h> #include <linux/mm.h> #include <linux/module.h> +#include <linux/unaligned.h> static void chacha_load_key (u32 *k,const u8 *in) { k[0 ] =get_unaligned_le32 (in); k[1 ] =get_unaligned_le32 (in +4 );
lib/crypto/curve25519-generic.c +1 -0
@@ -8,10 +8,11 @@* * Information: https://cr.yp.to/ecdh.html */ #include <crypto/curve25519.h> +#include <linux/export.h> #include <linux/module.h> const u8 curve25519_null_point[CURVE25519_KEY_SIZE ]__aligned(32) = {0 };const u8 curve25519_base_point[CURVE25519_KEY_SIZE ]__aligned(32) = {9 };
lib/crypto/des.c +3 -4
@@ -5,25 +5,24 @@* DES & Triple DES EDE Cipher Algorithms. * * Copyright (c) 2005 Dag Arne Osvik <[email protected]> */ +#include <crypto/des.h> +#include <crypto/internal/des.h> #include <linux/bitops.h> #include <linux/compiler.h> #include <linux/crypto.h> #include <linux/errno.h> +#include <linux/export.h> #include <linux/fips.h> #include <linux/init.h> #include <linux/module.h> #include <linux/string.h> #include <linux/types.h> -#include <linux/unaligned.h> -#include <crypto/des.h> -#include <crypto/internal/des.h> -#define ROL (x, r) ((x) = rol32((x), (r)))#define ROR (x, r) ((x) = ror32((x), (r)))/* Lookup tables for key expansion */
lib/crypto/gf128mul.c +1 -0
@@ -47,10 +47,11 @@This file provides fast multiplication in GF(2^128) as required by several cryptographic authentication modes */ #include <crypto/gf128mul.h> +#include <linux/export.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/slab.h> #define gf128mul_dat (q) { \
lib/crypto/libchacha.c +3 -4
@@ -3,16 +3,15 @@* The ChaCha stream cipher (RFC7539) * * Copyright (C) 2015 Martin Willi */ -#include <linux/kernel.h> -#include <linux/export.h> -#include <linux/module.h> -#include <crypto/algapi.h> // for crypto_xor_cpy #include <crypto/chacha.h> +#include <linux/export.h> +#include <linux/kernel.h> +#include <linux/module.h> void chacha_crypt_generic (struct chacha_state *state,u8 *dst,const u8 *src,unsigned int bytes,int nrounds) {/* aligned to potentially speed up crypto_xor() */
lib/crypto/memneq.c +2 -1
@@ -57,13 +57,14 @@* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include <linux/unaligned.h> #include <crypto/algapi.h> +#include <linux/export.h> #include <linux/module.h> +#include <linux/unaligned.h> /* Generic path for arbitrary size */ static inline unsigned long __crypto_memneq_generic (const void *a,const void *b,size_t size) {
lib/crypto/mpi/mpi-add.c +2 -0
@@ -9,10 +9,12 @@* way the data is stored; this is to support the abstraction * of an optional secure memory allocation which may be used * to avoid revealing of sensitive data due to paging etc. */ +#include <linux/export.h> +#include "mpi-internal.h" int mpi_add (MPI w,MPI u,MPI v) {mpi_ptr_t wp, up, vp;
lib/crypto/mpi/mpi-bit.c +2 -0
@@ -16,10 +16,12 @@* You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ +#include <linux/export.h> +#include "mpi-internal.h" #include "longlong.h" #define A_LIMB_1 ((mpi_limb_t) 1)
lib/crypto/mpi/mpi-cmp.c +2 -0
@@ -16,10 +16,12 @@* You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ +#include <linux/export.h> +#include "mpi-internal.h" int mpi_cmp_ui (MPI u,unsigned long v) {mpi_limb_t limb = v;
lib/crypto/mpi/mpi-mul.c +2 -0
@@ -9,10 +9,12 @@* way the data is stored; this is to support the abstraction * of an optional secure memory allocation which may be used * to avoid revealing of sensitive data due to paging etc. */ +#include <linux/export.h> +#include "mpi-internal.h" int mpi_mul (MPI w,MPI u,MPI v) {mpi_size_t usize, vsize, wsize;
lib/crypto/mpi/mpi-pow.c +2 -0
@@ -11,12 +11,14 @@* to avoid revealing of sensitive data due to paging etc. * The GNU MP Library itself is published under the LGPL; * however I decided to publish this code under the plain GPL. */ +#include <linux/export.h> #include <linux/sched.h> #include <linux/string.h> +#include "mpi-internal.h" #include "longlong.h" /**************** * RES = BASE ^ EXP mod MOD
lib/crypto/mpi/mpi-sub-ui.c +2 -0
@@ -30,10 +30,12 @@* You should have received copies of the GNU General Public License and the * GNU Lesser General Public License along with the GNU MP Library. If not, * see https://www.gnu.org/licenses/. */ +#include <linux/export.h> +#include "mpi-internal.h" int mpi_sub_ui (MPI w,MPI u,unsigned long vval) {if (u->nlimbs ==0 ) {
lib/crypto/mpi/mpicoder.c +2 -1
@@ -17,12 +17,13 @@* along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #include <linux/bitops.h> -#include <linux/count_zeros.h> #include <linux/byteorder/generic.h> +#include <linux/count_zeros.h> +#include <linux/export.h> #include <linux/scatterlist.h> #include <linux/string.h> #include "mpi-internal.h" #define MAX_EXTERN_MPI_BITS 16384
lib/crypto/mpi/mpiutil.c +2 -0
@@ -16,10 +16,12 @@* You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ +#include <linux/export.h> +#include "mpi-internal.h" /**************** * Note: It was a bad idea to use the number of limbs to allocate * because on a alpha the limbs are large but we normally need
lib/crypto/poly1305-donna32.c +2 -1
@@ -4,13 +4,14 @@* * This is based in part on Andrew Moon's poly1305-donna, which is in the * public domain. */ +#include <crypto/internal/poly1305.h> +#include <linux/export.h> #include <linux/kernel.h> #include <linux/unaligned.h> -#include <crypto/internal/poly1305.h> void poly1305_core_setkey (struct poly1305_core_key *key,const u8 raw_key[POLY1305_BLOCK_SIZE ]) {/* r &= 0xffffffc0ffffffc0ffffffc0fffffff */
lib/crypto/poly1305-donna64.c +2 -1
@@ -4,13 +4,14 @@* * This is based in part on Andrew Moon's poly1305-donna, which is in the * public domain. */ +#include <crypto/internal/poly1305.h> +#include <linux/export.h> #include <linux/kernel.h> #include <linux/unaligned.h> -#include <crypto/internal/poly1305.h> void poly1305_core_setkey (struct poly1305_core_key *key,const u8 raw_key[POLY1305_BLOCK_SIZE ]) {u64 t0, t1;
lib/crypto/poly1305-generic.c +1 -0
@@ -6,10 +6,11 @@* * Based on public domain code by Andrew Moon and Daniel J. Bernstein. */ #include <crypto/internal/poly1305.h> +#include <linux/export.h> #include <linux/kernel.h> #include <linux/module.h> void poly1305_block_init_generic (struct poly1305_block_state *desc,const u8 raw_key[POLY1305_BLOCK_SIZE ])
lib/crypto/poly1305.c +1 -0
@@ -7,10 +7,11 @@* Based on public domain code by Andrew Moon and Daniel J. Bernstein. */ #include <crypto/internal/blockhash.h> #include <crypto/internal/poly1305.h> +#include <linux/export.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/string.h> #include <linux/unaligned.h>
lib/crypto/sha1.c +3 -3
@@ -4,16 +4,16 @@* and to avoid unnecessary copies into the context array. * * This was based on the git SHA1 implementation. */ -#include <linux/kernel.h> +#include <crypto/sha1.h> +#include <linux/bitops.h> #include <linux/export.h> +#include <linux/kernel.h> #include <linux/module.h> -#include <linux/bitops.h> #include <linux/string.h> -#include <crypto/sha1.h> #include <linux/unaligned.h> /* * If you have 32 registers or more, the compiler can (and should) * try to change the array[] accesses into registers. However, on
lib/crypto/sha256-generic.c +1 -0
@@ -10,10 +10,11 @@* Copyright (c) 2002 James Morris <[email protected]> * Copyright (c) 2014 Red Hat Inc. */ #include <crypto/internal/sha2.h> +#include <linux/export.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/string.h> #include <linux/unaligned.h>
lib/crypto/sha256.c +1 -0
@@ -11,10 +11,11 @@* Copyright (c) 2014 Red Hat Inc. */ #include <crypto/internal/blockhash.h> #include <crypto/internal/sha2.h> +#include <linux/export.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/string.h> /*
lib/crypto/sm3.c +1 -0
@@ -7,10 +7,11 @@* Copyright (C) 2017 Gilad Ben-Yossef <[email protected]> * Copyright (C) 2021 Tianjia Zhang <[email protected]> */ #include <crypto/sm3.h> +#include <linux/export.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/string.h> #include <linux/unaligned.h>
lib/crypto/utils.c +2 -1
@@ -3,13 +3,14 @@* Crypto library utility functions * * Copyright (c) 2006 Herbert Xu <[email protected]> */ -#include <linux/unaligned.h> #include <crypto/utils.h> +#include <linux/export.h> #include <linux/module.h> +#include <linux/unaligned.h> /* * XOR @len bytes from @src1 and @src2 together, writing the result to @dst * (which may alias one of the sources). Don't call this directly; call * crypto_xor() or crypto_xor_cpy() instead.
base-commit: 19272b37aa4f83ca52bdf9c16d5d81bdd1354494
Signature · 1 line
2.49.0
Quoted 9 lines · Eric Biggers
From: Eric Biggers <[email protected]>
Fix build warnings with W=1 that started appearing after commit
a934a57a42f6("scripts/misc-check: check missing #include <linux/export.h> when W=1").While at it, also sort the include lists alphabetically. (Keep
asm/irqflags.hlast, as otherwise it doesn't build on alpha.)
Quoted 8 lines
This handles all of
lib/crypto/, but notarch/*/lib/crypto/. The exports inarch/*/lib/crypto/will go away when the code is properly integrated intolib/crypto/as planned.Signed-off-by Eric Biggers <[email protected]>v2: keep
asm/irqflags.hlast, to avoid build error on alpha(https://lore.kernel.org/all/[email protected]/)
Applied to https://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux.git/log/?h=libcrypto-next
- Eric