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 |
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
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
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
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 --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