Messages in this thread | | | From | Doug Anderson <> | Date | Fri, 14 Jan 2022 08:12:41 -0800 | Subject | Re: [PATCH] module: fix signature check failures when using in-kernel decompression |
| |
Hi,
On Thu, Jan 13, 2022 at 4:52 PM Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote: > > The new flag MODULE_INIT_COMPRESSED_FILE unintentionally trips check in > module_sig_check(). The check was supposed to catch case when version > info or magic was removed from a signed module, making signature > invalid, but it was coded too broadly and was catching this new flag as > well. > > Change the check to only test the 2 particular flags affecting signature > validity. > > Fixes: b1ae6dc41eaa ("module: add in-kernel support for decompressing") > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> > --- > kernel/module.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/kernel/module.c b/kernel/module.c > index 201398d58079..24dab046e16c 100644 > --- a/kernel/module.c > +++ b/kernel/module.c > @@ -2883,12 +2883,13 @@ static int module_sig_check(struct load_info *info, int flags) > const unsigned long markerlen = sizeof(MODULE_SIG_STRING) - 1; > const char *reason; > const void *mod = info->hdr; > - > + bool mangled_module = flags & (MODULE_INIT_IGNORE_MODVERSIONS | > + MODULE_INIT_IGNORE_VERMAGIC); > /* > - * Require flags == 0, as a module with version information > - * removed is no longer the module that was signed > + * Do not allow mangled modules as a module with version information > + * removed is no longer the module that was signed. > */ > - if (flags == 0 && > + if (!mangled_module &&
Seems reasonable to me. I guess the only question in my mind is whether this is the best way to handle "unknown" new flags. If someone introduces a new flag to "uapi/linux/module.h" should we consider it as "mangled" or not? Given that I can't predict the future and the comments seem to indicate that we're only trying to detect version-related issues, your choice seems OK to me.
Reviewed-by: Douglas Anderson <dianders@chromium.org>
| |