On Tue, Jun 11, 2024 at 11:38 AM Tao Liu <l...@redhat.com> wrote:

> Hi Lianbo,
>
> I have the patch tested, looks good to me, so ack.
>
>
Applied:
https://github.com/crash-utility/crash/commit/a20eb05de3c1cab954d49eb8bb9dc7fe5224caa0

Thanks
Lianbo


> Thanks,
> Tao Liu
>
> On Wed, Jun 5, 2024 at 6:06 PM Lianbo Jiang <liji...@redhat.com> wrote:
> >
> > In some kernel modules such as libie.ko, the mem[MOD_TEXT].size
> > may be zero, currently crash will only check its value to determine
> > if the module is valid, otherwise it fails to load kernel module with
> > the following warning and error:
> >
> >   WARNING: invalid kernel module size: 0
> >         KERNEL: /lib/modules/6.10.0-rc1+/build/vmlinux
> >       DUMPFILE: /proc/kcore
> >           CPUS: 64
> >           DATE: Wed Jun  5 12:49:02 IDT 2024
> >         UPTIME: 5 days, 05:57:21
> >   LOAD AVERAGE: 0.28, 0.06, 0.02
> >          TASKS: 806
> >       NODENAME: xxxx
> >        RELEASE: 6.10.0-rc1+
> >        VERSION: #1 SMP PREEMPT_DYNAMIC Fri May 31 04:56:59 IDT 2024
> >        MACHINE: x86_64  (2100 Mhz)
> >         MEMORY: 1.6 GB
> >            PID: 203686
> >        COMMAND: "crash"
> >           TASK: ffff9f9bf66d0000  [THREAD_INFO: ffff9f9bf66d0000]
> >            CPU: 52
> >          STATE: TASK_RUNNING (ACTIVE)
> >
> >   crash> mod
> >   mod: cannot access vmalloc'd module memory
> >   crash>
> >
> > Lets count the module size to check if the module is valid, that will
> > avoid the current failure.
> >
> > Signed-off-by: Lianbo Jiang <liji...@redhat.com>
> > ---
> >  kernel.c | 20 ++++++++++++++++----
> >  1 file changed, 16 insertions(+), 4 deletions(-)
> >
> > diff --git a/kernel.c b/kernel.c
> > index 1728b70c1b5c..e0dc23b9b233 100644
> > --- a/kernel.c
> > +++ b/kernel.c
> > @@ -3821,9 +3821,21 @@ module_init(void)
> >                 case KALLSYMS_V2:
> >                         if (THIS_KERNEL_VERSION >= LINUX(2,6,27)) {
> >                                 numksyms = UINT(modbuf +
> OFFSET(module_num_symtab));
> > -                               if (MODULE_MEMORY())
> > -                                       /* check mem[MOD_TEXT].size only
> */
> > -                                       size = UINT(modbuf +
> OFFSET(module_mem) + OFFSET(module_memory_size));
> > +                               if (MODULE_MEMORY()) {
> > +                                       /*
> > +                                        * The mem[MOD_TEXT].size may be
> zero, lets count
> > +                                        * the module size as below.
> > +                                       */
> > +                                       int t;
> > +                                       size = 0;
> > +                                       for_each_mod_mem_type(t) {
> > +                                               if (t == MOD_INIT_TEXT)
> > +                                                       break;
> > +                                               size += UINT(modbuf +
> OFFSET(module_mem) +
> > +
>  SIZE(module_memory) * t +
> > +
>  OFFSET(module_memory_size));
> > +                                       }
> > +                               }
> >                                 else
> >                                         size = UINT(modbuf +
> MODULE_OFFSET2(module_core_size, rx));
> >                         } else {
> > @@ -3926,7 +3938,7 @@ verify_modules(void)
> >
> >                  for (i = 0, found = FALSE; i < kt->mods_installed; i++)
> {
> >                          lm = &st->load_modules[i];
> > -                       if (!kvtop(NULL, lm->mod_base, &paddr, 0)) {
> > +                       if (lm->mod_base && !kvtop(NULL, lm->mod_base,
> &paddr, 0)) {
> >                                 irregularities++;
> >                                  break;
> >                         }
> > --
> > 2.45.1
> > --
> > Crash-utility mailing list -- devel@lists.crash-utility.osci.io
> > To unsubscribe send an email to devel-le...@lists.crash-utility.osci.io
> > https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
> > Contribution Guidelines: https://github.com/crash-utility/crash/wiki
>
>
--
Crash-utility mailing list -- devel@lists.crash-utility.osci.io
To unsubscribe send an email to devel-le...@lists.crash-utility.osci.io
https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
Contribution Guidelines: https://github.com/crash-utility/crash/wiki

Reply via email to