mirror-linux/lib/crypto
Eric Biggers 8f45af945f lib/crypto: aesgcm: Don't disable IRQs during AES block encryption
aes_encrypt() now uses AES instructions when available instead of always
using table-based code.  AES instructions are constant-time and don't
benefit from disabling IRQs as a constant-time hardening measure.

In fact, on two architectures (arm and riscv) disabling IRQs is
counterproductive because it prevents the AES instructions from being
used.  (See the may_use_simd() implementation on those architectures.)

Therefore, let's remove the IRQ disabling/enabling and leave the choice
of constant-time hardening measures to the AES library code.

Note that currently the arm table-based AES code (which runs on arm
kernels that don't have ARMv8 CE) disables IRQs, while the generic
table-based AES code does not.  So this does technically regress in
constant-time hardening when that generic code is used.  But as
discussed in commit a22fd0e3c4 ("lib/crypto: aes: Introduce improved
AES library") I think just leaving IRQs enabled is the right choice.
Disabling them is slow and can cause problems, and AES instructions
(which modern CPUs have) solve the problem in a much better way anyway.

Link: https://lore.kernel.org/r/20260331024430.51755-1-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
2026-03-31 17:19:22 -07:00
..
arm lib/crypto: arm/ghash: Migrate optimized code into library 2026-03-23 15:24:54 -07:00
arm64 lib/crypto: arm64/sm3: Migrate optimized code into library 2026-03-23 17:50:59 -07:00
mips lib/crypto: mips: Drop optimized MD5 code 2026-03-30 12:35:05 -07:00
mpi Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
powerpc lib/crypto: powerpc/ghash: Migrate optimized code into library 2026-03-23 16:44:29 -07:00
riscv lib/crypto: riscv/sm3: Migrate optimized code into library 2026-03-23 17:50:59 -07:00
s390 lib/crypto: s390/ghash: Migrate optimized code into library 2026-03-23 16:44:29 -07:00
sparc lib/crypto: sparc: Drop optimized MD5 code 2026-03-30 12:35:16 -07:00
tests lib/crypto: tests: Migrate ChaCha20Poly1305 self-test to KUnit 2026-03-30 12:35:30 -07:00
x86 lib/crypto: x86/sm3: Migrate optimized code into library 2026-03-23 17:50:59 -07:00
.kunitconfig lib/crypto: tests: Migrate ChaCha20Poly1305 self-test to KUnit 2026-03-30 12:35:30 -07:00
Kconfig lib/crypto: sparc: Drop optimized MD5 code 2026-03-30 12:35:16 -07:00
Makefile lib/crypto: tests: Migrate ChaCha20Poly1305 self-test to KUnit 2026-03-30 12:35:30 -07:00
aes.c lib/crypto: aes: Add FIPS self-test for CMAC 2026-03-09 13:27:20 -07:00
aescfb.c lib/crypto: aescfb: Don't disable IRQs during AES block encryption 2026-03-31 17:19:15 -07:00
aesgcm.c lib/crypto: aesgcm: Don't disable IRQs during AES block encryption 2026-03-31 17:19:22 -07:00
arc4.c lib/crypto: Explicitly include <linux/export.h> 2025-06-30 09:26:19 -07:00
blake2b.c lib/crypto: blake2b: Roll up BLAKE2b round loop on 32-bit 2025-12-09 15:10:21 -08:00
blake2s.c lib/crypto: blake2s: Replace manual unrolling with unrolled_full 2025-12-09 15:10:21 -08:00
chacha-block-generic.c lib/crypto: chacha: Rename chacha.c to chacha-block-generic.c 2025-08-29 09:50:19 -07:00
chacha.c lib/crypto: chacha: Consolidate into single module 2025-08-29 09:50:19 -07:00
chacha20poly1305.c lib/crypto: tests: Migrate ChaCha20Poly1305 self-test to KUnit 2026-03-30 12:35:30 -07:00
curve25519-fiat32.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
curve25519-hacl64.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
curve25519.c lib/crypto: curve25519: Consolidate into single module 2025-09-06 16:32:43 -07:00
des.c lib/crypto: Explicitly include <linux/export.h> 2025-06-30 09:26:19 -07:00
fips-mldsa.h lib/crypto: mldsa: Add FIPS cryptographic algorithm self-test 2026-01-12 11:07:50 -08:00
fips.h lib/crypto: aes: Add FIPS self-test for CMAC 2026-03-09 13:27:20 -07:00
gf128hash.c lib/crypto: gf128hash: Add GHASH support 2026-03-23 13:15:13 -07:00
gf128mul.c lib/crypto: gf128mul: Remove unused 4k_lle functions 2026-03-23 16:44:30 -07:00
hash_info.c lib/crypto: hash_info: Move hash_info.c into lib/crypto/ 2025-07-08 12:03:44 -07:00
md5.c lib/crypto: md5: Use rol32() instead of open-coding it 2026-01-12 11:07:50 -08:00
memneq.c lib/crypto: Explicitly include <linux/export.h> 2025-06-30 09:26:19 -07:00
mldsa.c lib/crypto: mldsa: Clarify the documentation for mldsa_verify() slightly 2026-02-03 19:28:51 -08:00
nh.c lib/crypto: nh: Add NH library 2026-01-12 11:07:49 -08:00
poly1305-donna32.c lib/crypto: Explicitly include <linux/export.h> 2025-06-30 09:26:19 -07:00
poly1305-donna64.c lib/crypto: Explicitly include <linux/export.h> 2025-06-30 09:26:19 -07:00
poly1305.c lib/crypto: poly1305: Consolidate into single module 2025-08-29 09:49:18 -07:00
sha1.c lib/crypto: sha1: Remove low-level functions from API 2026-01-27 15:47:41 -08:00
sha3.c lib/crypto: sha3: Support arch overrides of one-shot digest functions 2025-11-05 20:02:35 -08:00
sha256.c lib/crypto: Add FIPS self-tests for SHA-1 and SHA-2 2025-10-29 22:04:24 -07:00
sha512.c lib/crypto: Add FIPS self-tests for SHA-1 and SHA-2 2025-10-29 22:04:24 -07:00
simd.c crypto: api - move crypto_simd_disabled_for_test to lib 2024-10-28 18:33:11 +08:00
sm3.c crypto: sm3 - Remove the original "sm3_block_generic()" 2026-03-23 17:50:59 -07:00
utils.c lib/crypto: Explicitly include <linux/export.h> 2025-06-30 09:26:19 -07:00