module: avoid allocation if module is already present and ready
After
======
time ./kmod.sh -t 0008
real 0m17.569s
user 0m0.108s
sys 0m11.200s
----------------------
time ./kmod.sh -t 0009
real 0m43.563s
user 0m0.568s
sys 0m10.560s
----------------------
Before
=======
root@piggy:~# systemd-analyze
Startup finished in 2.016s (kernel) + 2.081s (userspace) = 4.098s
After
=====
root@piggy:~# systemd-analyze
Startup finished in 2.041s (kernel) + 2.513s (userspace) = 4.554s
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
diff --git a/kernel/module.c b/kernel/module.c
index 5485012..9c7c274 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -3392,6 +3392,9 @@ static int early_mod_check(struct load_info *info, int flags,
if (err)
return err;
+ if (finished_loading(mod->name))
+ return 0;
+
return 0;
}