]> git.ipfire.org Git - thirdparty/linux.git/commit
lib/crypto: sha256: Consolidate into single module
authorEric Biggers <ebiggers@kernel.org>
Mon, 30 Jun 2025 16:06:43 +0000 (09:06 -0700)
committerEric Biggers <ebiggers@kernel.org>
Fri, 4 Jul 2025 17:23:11 +0000 (10:23 -0700)
commite96cb9507f2d8ba150d417dcd283204564945831
tree33976c08850b8d15d9017cd0f2cc642ab5fb8cd2
parent9f9846a72eec406db9e1eadcad1dd5e90aa0f355
lib/crypto: sha256: Consolidate into single module

Consolidate the CPU-based SHA-256 code into a single module, following
what I did with SHA-512:

- Each arch now provides a header file lib/crypto/$(SRCARCH)/sha256.h,
  replacing lib/crypto/$(SRCARCH)/sha256.c.  The header defines
  sha256_blocks() and optionally sha256_mod_init_arch().  It is included
  by lib/crypto/sha256.c, and thus the code gets built into the single
  libsha256 module, with proper inlining and dead code elimination.

- sha256_blocks_generic() is moved from lib/crypto/sha256-generic.c into
  lib/crypto/sha256.c.  It's now a static function marked with
  __maybe_unused, so the compiler automatically eliminates it in any
  cases where it's not used.

- Whether arch-optimized SHA-256 is buildable is now controlled
  centrally by lib/crypto/Kconfig instead of by
  lib/crypto/$(SRCARCH)/Kconfig.  The conditions for enabling it remain
  the same as before, and it remains enabled by default.

- Any additional arch-specific translation units for the optimized
  SHA-256 code (such as assembly files) are now compiled by
  lib/crypto/Makefile instead of lib/crypto/$(SRCARCH)/Makefile.

Acked-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20250630160645.3198-13-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
29 files changed:
arch/mips/cavium-octeon/Kconfig
arch/mips/cavium-octeon/crypto/Makefile
include/crypto/internal/sha2.h [deleted file]
lib/crypto/Kconfig
lib/crypto/Makefile
lib/crypto/arm/Kconfig
lib/crypto/arm/Makefile
lib/crypto/arm/sha256.h [moved from lib/crypto/arm/sha256.c with 64% similarity]
lib/crypto/arm64/Kconfig
lib/crypto/arm64/Makefile
lib/crypto/arm64/sha256.h [moved from lib/crypto/arm64/sha256.c with 67% similarity]
lib/crypto/mips/sha256.h [moved from arch/mips/cavium-octeon/crypto/octeon-sha256.c with 80% similarity]
lib/crypto/powerpc/Kconfig
lib/crypto/powerpc/Makefile
lib/crypto/powerpc/sha256.h [moved from lib/crypto/powerpc/sha256.c with 80% similarity]
lib/crypto/riscv/Kconfig
lib/crypto/riscv/Makefile
lib/crypto/riscv/sha256.h [moved from lib/crypto/riscv/sha256.c with 63% similarity]
lib/crypto/s390/Kconfig
lib/crypto/s390/Makefile
lib/crypto/s390/sha256.h [moved from lib/crypto/s390/sha256.c with 50% similarity]
lib/crypto/sha256-generic.c [deleted file]
lib/crypto/sha256.c
lib/crypto/sparc/Kconfig [deleted file]
lib/crypto/sparc/Makefile [deleted file]
lib/crypto/sparc/sha256.h [moved from lib/crypto/sparc/sha256.c with 62% similarity]
lib/crypto/x86/Kconfig
lib/crypto/x86/Makefile
lib/crypto/x86/sha256.h [moved from lib/crypto/x86/sha256.c with 70% similarity]