diff mbox series

[v2,3/3] crypto: lib - move crypto_simd_disabled_for_test into utils

Message ID 20220716062920.210381-4-ebiggers@kernel.org (mailing list archive)
State Changes Requested
Delegated to: Herbert Xu
Headers show
Series crypto: lib - create utils module | expand

Commit Message

Eric Biggers July 16, 2022, 6:29 a.m. UTC
From: Eric Biggers <ebiggers@google.com>

Move the definition of crypto_simd_disabled_for_test into
lib/crypto/utils.c so that it can be accessed by library code.

This is needed when code that is shared between a traditional crypto API
implementation and a library implementation is built-in, but
CRYPTO_ALGAPI=m.  The x86 blake2s previously was an example of this
(https://lore.kernel.org/linux-crypto/20220517033630.1182-1-gaochao49@huawei.com/T/#u).
Although that case was resolved by removing the blake2s shash support,
this problem could easily come back in the future, so let's address it.

Signed-off-by: Eric Biggers <ebiggers@google.com>
---
 crypto/algapi.c    | 6 ------
 lib/crypto/utils.c | 6 ++++++
 2 files changed, 6 insertions(+), 6 deletions(-)

Comments

Jason A. Donenfeld July 16, 2022, 6:32 p.m. UTC | #1
Hi Eric,

On Fri, Jul 15, 2022 at 11:29:20PM -0700, Eric Biggers wrote:
> From: Eric Biggers <ebiggers@google.com>
> 
> Move the definition of crypto_simd_disabled_for_test into
> lib/crypto/utils.c so that it can be accessed by library code.
> 
> This is needed when code that is shared between a traditional crypto API
> implementation and a library implementation is built-in, but
> CRYPTO_ALGAPI=m.  The x86 blake2s previously was an example of this
> (https://lore.kernel.org/linux-crypto/20220517033630.1182-1-gaochao49@huawei.com/T/#u).
> Although that case was resolved by removing the blake2s shash support,
> this problem could easily come back in the future, so let's address it.

I'm not sure I see the reason in general for a utility library rather
than doing these piecemeal like the rest of lib functions. Why is crypto
special here? But in particular to this patch: nothing is actually using
crypto_simd_disabled_for_test in lib/crypto, right? So is this
necessary?

Jason
Eric Biggers July 19, 2022, 4:34 a.m. UTC | #2
On Sat, Jul 16, 2022 at 08:32:55PM +0200, Jason A. Donenfeld wrote:
> Hi Eric,
> 
> On Fri, Jul 15, 2022 at 11:29:20PM -0700, Eric Biggers wrote:
> > From: Eric Biggers <ebiggers@google.com>
> > 
> > Move the definition of crypto_simd_disabled_for_test into
> > lib/crypto/utils.c so that it can be accessed by library code.
> > 
> > This is needed when code that is shared between a traditional crypto API
> > implementation and a library implementation is built-in, but
> > CRYPTO_ALGAPI=m.  The x86 blake2s previously was an example of this
> > (https://lore.kernel.org/linux-crypto/20220517033630.1182-1-gaochao49@huawei.com/T/#u).
> > Although that case was resolved by removing the blake2s shash support,
> > this problem could easily come back in the future, so let's address it.
> 
> I'm not sure I see the reason in general for a utility library rather
> than doing these piecemeal like the rest of lib functions. Why is crypto
> special here? But in particular to this patch: nothing is actually using
> crypto_simd_disabled_for_test in lib/crypto, right? So is this
> necessary?

Well, this is what Herbert wanted:
https://lore.kernel.org/r/YtEgzHuuMts0YBCz@gondor.apana.org.au.  It's
subjective, but for now I think I prefer this approach too, since the utility
functions are so small and are widely used.  A whole module is overkill for just
a few lines of code.

The commit message answers your second and third questions.

- Eric
Eric Biggers July 21, 2022, 7:01 a.m. UTC | #3
On Mon, Jul 18, 2022 at 09:34:23PM -0700, Eric Biggers wrote:
> On Sat, Jul 16, 2022 at 08:32:55PM +0200, Jason A. Donenfeld wrote:
> > Hi Eric,
> > 
> > On Fri, Jul 15, 2022 at 11:29:20PM -0700, Eric Biggers wrote:
> > > From: Eric Biggers <ebiggers@google.com>
> > > 
> > > Move the definition of crypto_simd_disabled_for_test into
> > > lib/crypto/utils.c so that it can be accessed by library code.
> > > 
> > > This is needed when code that is shared between a traditional crypto API
> > > implementation and a library implementation is built-in, but
> > > CRYPTO_ALGAPI=m.  The x86 blake2s previously was an example of this
> > > (https://lore.kernel.org/linux-crypto/20220517033630.1182-1-gaochao49@huawei.com/T/#u).
> > > Although that case was resolved by removing the blake2s shash support,
> > > this problem could easily come back in the future, so let's address it.
> > 
> > I'm not sure I see the reason in general for a utility library rather
> > than doing these piecemeal like the rest of lib functions. Why is crypto
> > special here? But in particular to this patch: nothing is actually using
> > crypto_simd_disabled_for_test in lib/crypto, right? So is this
> > necessary?
> 
> Well, this is what Herbert wanted:
> https://lore.kernel.org/r/YtEgzHuuMts0YBCz@gondor.apana.org.au.  It's
> subjective, but for now I think I prefer this approach too, since the utility
> functions are so small and are widely used.  A whole module is overkill for just
> a few lines of code.
> 
> The commit message answers your second and third questions.
> 

Herbert, any thoughts on this?

Note: I forgot to put a MODULE_LICENSE in the new module, so I'll need to resend
this patchset even if there are no other issues.

- Eric
Herbert Xu July 21, 2022, 7:36 a.m. UTC | #4
Hi Eric:

On Thu, Jul 21, 2022 at 12:01:47AM -0700, Eric Biggers wrote:
>
> Herbert, any thoughts on this?

I'm happy to drop the simd patch for now as there are no users
under lib/crypto.

> Note: I forgot to put a MODULE_LICENSE in the new module, so I'll need to resend
> this patchset even if there are no other issues.

Thanks!
diff mbox series

Patch

diff --git a/crypto/algapi.c b/crypto/algapi.c
index 5c69ff8e8fa5c1..9377dae75b3def 100644
--- a/crypto/algapi.c
+++ b/crypto/algapi.c
@@ -6,7 +6,6 @@ 
  */
 
 #include <crypto/algapi.h>
-#include <crypto/internal/simd.h>
 #include <linux/err.h>
 #include <linux/errno.h>
 #include <linux/fips.h>
@@ -22,11 +21,6 @@ 
 
 static LIST_HEAD(crypto_template_list);
 
-#ifdef CONFIG_CRYPTO_MANAGER_EXTRA_TESTS
-DEFINE_PER_CPU(bool, crypto_simd_disabled_for_test);
-EXPORT_PER_CPU_SYMBOL_GPL(crypto_simd_disabled_for_test);
-#endif
-
 static inline void crypto_check_module_sig(struct module *mod)
 {
 	if (fips_enabled && mod && !module_sig_ok(mod))
diff --git a/lib/crypto/utils.c b/lib/crypto/utils.c
index f20bdb2ae88771..e7d99f150d4e61 100644
--- a/lib/crypto/utils.c
+++ b/lib/crypto/utils.c
@@ -6,8 +6,14 @@ 
  */
 
 #include <crypto/algapi.h>
+#include <crypto/internal/simd.h>
 #include <asm/unaligned.h>
 
+#ifdef CONFIG_CRYPTO_MANAGER_EXTRA_TESTS
+DEFINE_PER_CPU(bool, crypto_simd_disabled_for_test);
+EXPORT_PER_CPU_SYMBOL_GPL(crypto_simd_disabled_for_test);
+#endif
+
 /*
  * 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