On Tue, 30 Apr 2024 at 00:39, Lucas De Marchi <lucas.demarchi@xxxxxxxxx> wrote: > > On Mon, Feb 12, 2024 at 05:23:14PM GMT, Emil Velikov via B4 Relay wrote: > >From: Emil Velikov <emil.l.velikov@xxxxxxxxx> > > > >Since the direct loading was introduced a few bugs became obvious that > >the compression args used were off - both in-kernel and dkms. > > > >While both of those are fixed already, not all of those have reached all > >users. For example: for dkms I'm aiming to do a release just as kmod has > >theirs (to align /lib/modules <> /usr/lib/modules support). > > > >Although I am wondering if we can indiscriminatingly callback to the old > >do_init_module() in all the cases. This means that we'll catch any > >in-kernel decompression issues - invalid args, ENOMEM, other.... > >Although for others (wrong magic, perm, etc) we will end up doing the > >exact kernel work twice. > > I'm not sure I like to repeat this for any error. Example: if we get an > EAGAIN we go and try again? When thinking about the recent in-kernel > optimizations to stop loading the same file again over and over, just > doing it again seems like a wrong approach. > To be honest I did notice the optimisation work in the kernel, but wasn't able to quantify its benefits on my end. ¯\_(ツ)_/¯ The most wide-spread issue (incompatible compression arguments in kernel and dkms) has been fixed and new releases are available. And other triggers do not seem that common/likely. So deferring/dropping this patch makes sense. > > > >Overall the trade-off seems worth it, so flip this. > > > I'm not sure. I will keep this out for now and apply the rest. > +Luis too. > Ack, thanks o/ -Emil > > Lucas De Marchi > > > > > >Signed-off-by: Emil Velikov <emil.l.velikov@xxxxxxxxx> > >--- > > libkmod/libkmod-module.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > >diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c > >index d309948..2c0d46d 100644 > >--- a/libkmod/libkmod-module.c > >+++ b/libkmod/libkmod-module.c > >@@ -980,7 +980,7 @@ KMOD_EXPORT int kmod_module_insert_module(struct kmod_module *mod, > > } > > > > err = do_finit_module(mod, flags, args); > >- if (err == -ENOSYS) > >+ if (err) > > err = do_init_module(mod, flags, args); > > > > if (err < 0) > > > >-- > >2.43.0 > >