diff mbox series

[1/3] crypto: tcrypt - don't initialize at subsys_initcall time

Message ID 20201109083143.2884-2-ardb@kernel.org (mailing list archive)
State Changes Requested
Delegated to: Herbert Xu
Headers show
Series crypto: tcrypt enhancements | expand

Commit Message

Ard Biesheuvel Nov. 9, 2020, 8:31 a.m. UTC
Commit c4741b2305979 ("crypto: run initcalls for generic implementations
earlier") converted tcrypt.ko's module_init() to subsys_initcall(), but
this was unintentional: tcrypt.ko currently cannot be built into the core
kernel, and so the subsys_initcall() gets converted into module_init()
under the hood. Given that tcrypt.ko does not implement a generic version
of a crypto algorithm that has to be available early during boot, there
is no point in running the tcrypt init code earlier than implied by
module_init().

However, for crypto development purposes, we will lift the restriction
that tcrypt.ko must be built as a module, and when builtin, it makes sense
for tcrypt.ko (which does its work inside the module init function) to run
as late as possible. So let's switch to late_initcall() instead.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 crypto/tcrypt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Eric Biggers Nov. 9, 2020, 5:59 p.m. UTC | #1
On Mon, Nov 09, 2020 at 09:31:41AM +0100, Ard Biesheuvel wrote:
> Commit c4741b2305979 ("crypto: run initcalls for generic implementations
> earlier") converted tcrypt.ko's module_init() to subsys_initcall(), but
> this was unintentional: tcrypt.ko currently cannot be built into the core
> kernel, and so the subsys_initcall() gets converted into module_init()
> under the hood. Given that tcrypt.ko does not implement a generic version
> of a crypto algorithm that has to be available early during boot, there
> is no point in running the tcrypt init code earlier than implied by
> module_init().
> 
> However, for crypto development purposes, we will lift the restriction
> that tcrypt.ko must be built as a module, and when builtin, it makes sense
> for tcrypt.ko (which does its work inside the module init function) to run
> as late as possible. So let's switch to late_initcall() instead.
> 
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> ---
>  crypto/tcrypt.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c
> index eea0f453cfb6..fc1f3e516694 100644
> --- a/crypto/tcrypt.c
> +++ b/crypto/tcrypt.c
> @@ -3066,7 +3066,7 @@ static int __init tcrypt_mod_init(void)
>   */
>  static void __exit tcrypt_mod_fini(void) { }
>  
> -subsys_initcall(tcrypt_mod_init);
> +late_initcall(tcrypt_mod_init);
>  module_exit(tcrypt_mod_fini);
>  
>  module_param(alg, charp, 0);
> -- 

Reviewed-by: Eric Biggers <ebiggers@google.com>
diff mbox series

Patch

diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c
index eea0f453cfb6..fc1f3e516694 100644
--- a/crypto/tcrypt.c
+++ b/crypto/tcrypt.c
@@ -3066,7 +3066,7 @@  static int __init tcrypt_mod_init(void)
  */
 static void __exit tcrypt_mod_fini(void) { }
 
-subsys_initcall(tcrypt_mod_init);
+late_initcall(tcrypt_mod_init);
 module_exit(tcrypt_mod_fini);
 
 module_param(alg, charp, 0);