On Thu, 27 Jun 2019 at 19:52, Eric Biggers <[email protected]> wrote:
>
> On Thu, Jun 27, 2019 at 12:26:43PM +0200, Ard Biesheuvel wrote:
> > There are a few copies of the AES S-boxes floating around, so export
> > the ones from the AES library so that we can reuse them in other
> > modules.
> >
> > Signed-off-by: Ard Biesheuvel <[email protected]>
> > ---
> > include/crypto/aes.h | 3 +++
> > lib/crypto/aes.c | 6 ++++++
> > 2 files changed, 9 insertions(+)
> >
> > diff --git a/include/crypto/aes.h b/include/crypto/aes.h
> > index df8426fd8051..8e0f4cf948e5 100644
> > --- a/include/crypto/aes.h
> > +++ b/include/crypto/aes.h
> > @@ -67,4 +67,7 @@ void aes_encrypt(const struct crypto_aes_ctx *ctx, u8
> > *out, const u8 *in);
> > */
> > void aes_decrypt(const struct crypto_aes_ctx *ctx, u8 *out, const u8 *in);
> >
> > +extern const u8 crypto_aes_sbox[];
> > +extern const u8 crypto_aes_inv_sbox[];
> > +
> > #endif
> > diff --git a/lib/crypto/aes.c b/lib/crypto/aes.c
> > index 9928b23e0a8a..467f0c35a0e0 100644
> > --- a/lib/crypto/aes.c
> > +++ b/lib/crypto/aes.c
> > @@ -82,6 +82,12 @@ static volatile const u8 __cacheline_aligned
> > aes_inv_sbox[] = {
> > 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d,
> > };
> >
> > +extern const u8 crypto_aes_sbox[] __alias(aes_sbox);
> > +extern const u8 crypto_aes_inv_sbox[] __alias(aes_inv_sbox);
> > +
> > +EXPORT_SYMBOL(crypto_aes_sbox);
> > +EXPORT_SYMBOL(crypto_aes_inv_sbox);
>
> I got a compiler warning:
>
> In file included from ./include/linux/linkage.h:7,
> from ./include/linux/kernel.h:8,
> from ./include/linux/crypto.h:16,
> from ./include/crypto/aes.h:10,
> from lib/crypto/aes.c:6:
> lib/crypto/aes.c:88:15: warning: array ‘crypto_aes_sbox’ assumed to have one
> element
> EXPORT_SYMBOL(crypto_aes_sbox);
> ^~~~~~~~~~~~~~~
> ./include/linux/export.h:79:21: note: in definition of macro
> ‘___EXPORT_SYMBOL’
> extern typeof(sym) sym; \
> ^~~
> lib/crypto/aes.c:88:1: note: in expansion of macro ‘EXPORT_SYMBOL’
> EXPORT_SYMBOL(crypto_aes_sbox);
> ^~~~~~~~~~~~~
> lib/crypto/aes.c:89:15: warning: array ‘crypto_aes_inv_sbox’ assumed to have
> one element
> EXPORT_SYMBOL(crypto_aes_inv_sbox);
> ^~~~~~~~~~~~~~~~~~~
> ./include/linux/export.h:79:21: note: in definition of macro
> ‘___EXPORT_SYMBOL’
> extern typeof(sym) sym; \
> ^~~
> lib/crypto/aes.c:89:1: note: in expansion of macro ‘EXPORT_SYMBOL’
> EXPORT_SYMBOL(crypto_aes_inv_sbox);
> ^~~~~~~~~~~~~
OK, I'll need to apply the following hunk on top to fix that
diff --git a/lib/crypto/aes.c b/lib/crypto/aes.c
index 467f0c35a0e0..4e100af38c51 100644
--- a/lib/crypto/aes.c
+++ b/lib/crypto/aes.c
@@ -82,8 +82,8 @@ static volatile const u8 __cacheline_aligned
aes_inv_sbox[] = {
0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d,
};
-extern const u8 crypto_aes_sbox[] __alias(aes_sbox);
-extern const u8 crypto_aes_inv_sbox[] __alias(aes_inv_sbox);
+extern const u8 crypto_aes_sbox[256] __alias(aes_sbox);
+extern const u8 crypto_aes_inv_sbox[256] __alias(aes_inv_sbox);
EXPORT_SYMBOL(crypto_aes_sbox);
EXPORT_SYMBOL(crypto_aes_inv_sbox);
I'll leave it up to Herbert to decide whether he wants that as a
follow up patch or whether I should respin and resend (assuming there
are no other reasons to do so)