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