Skip to content

Commit fbfeca7

Browse files
author
Eric Biggers
committed
lib/crypto: aes: Drop 'volatile' from aes_sbox and aes_inv_sbox
The volatile keyword is no longer necessary or useful on aes_sbox and aes_inv_sbox, since the table prefetching is now done using a helper function that casts to volatile itself and also includes an optimization barrier. Since it prevents some compiler optimizations, remove it. Acked-by: Ard Biesheuvel <ardb@kernel.org> Link: https://lore.kernel.org/r/20260112192035.10427-36-ebiggers@kernel.org Signed-off-by: Eric Biggers <ebiggers@kernel.org>
1 parent 953f2db commit fbfeca7

1 file changed

Lines changed: 3 additions & 7 deletions

File tree

lib/crypto/aes.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,7 @@
1111
#include <linux/module.h>
1212
#include <linux/unaligned.h>
1313

14-
/*
15-
* Emit the sbox as volatile const to prevent the compiler from doing
16-
* constant folding on sbox references involving fixed indexes.
17-
*/
18-
static volatile const u8 ____cacheline_aligned aes_sbox[] = {
14+
static const u8 ____cacheline_aligned aes_sbox[] = {
1915
0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5,
2016
0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
2117
0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,
@@ -50,7 +46,7 @@ static volatile const u8 ____cacheline_aligned aes_sbox[] = {
5046
0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16,
5147
};
5248

53-
static volatile const u8 ____cacheline_aligned aes_inv_sbox[] = {
49+
static const u8 ____cacheline_aligned aes_inv_sbox[] = {
5450
0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38,
5551
0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb,
5652
0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,
@@ -430,7 +426,7 @@ static void __maybe_unused aes_decrypt_generic(const u32 inv_rndkeys[],
430426
w[3] = w3;
431427
} while (--n);
432428

433-
aes_prefetch((const void *)aes_inv_sbox, sizeof(aes_inv_sbox));
429+
aes_prefetch(aes_inv_sbox, sizeof(aes_inv_sbox));
434430
put_unaligned_le32(declast_quarterround(w, 0, *rkp++), &out[0]);
435431
put_unaligned_le32(declast_quarterround(w, 1, *rkp++), &out[4]);
436432
put_unaligned_le32(declast_quarterround(w, 2, *rkp++), &out[8]);

0 commit comments

Comments
 (0)