Re: [ [PATCH]] arm64: Fix for st->_stext_vmlinux not initialized when set VA_BITS_ACTUAL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,Kazu

Would you like to help review this patch?

qianli zhao <zhaoqianligood@xxxxxxxxx> 于2022年6月24日周五 10:56写道:

>
> Hi,all
>
> Here's some explanation for this patch
>
> Without patch:
> Consider the following scenario
> ->arm64_init(PRE_GDB)
> case PRE_GDB:
> ...
>  292                         } else if (ms->VA_BITS_ACTUAL) {
>  293                                 ms->modules_vaddr =
> (st->_stext_vmlinux & TEXT_OFFSET_MASK) -
> ARM64_MODULES_VSIZE;-->//ms->modules_vaddr=0xfffffffff8000000
>  294                                 ms->modules_end =
> ms->modules_vaddr + ARM64_MODULES_VSIZE
> -1;--->//ms->modules_end=0xffffffffffffffff
>  295                                 ms->vmalloc_start_addr =
> ms->modules_end + 1;--->//ms->vmalloc_start_addr=0
> 296                         } else {
>                                ....
>                                }
>                                arm64_calc_kimage_voffset();
> .....
>
> Since arm64_calc_kimage_voffset() depends on vmalloc_start_addr,
> kimage_voffset cannot be calculated correctly.
>
> st->_stext_vmlinux can be initialized in numeric_forward(),just set
> st->_stext_vmlinux to UNINITIALIZED.
>
> ============
> log as below:
>
> $ ~/crash/crash/crash vmlinux DDRCS0.bin@0x80000000 --machdep vabits_actual=48
>
> crash 8.0.1++
> Copyright (C) 2002-2022  Red Hat, Inc.
> Copyright (C) 2004, 2005, 2006, 2010  IBM Corporation
> Copyright (C) 1999-2006  Hewlett-Packard Co
> Copyright (C) 2005, 2006, 2011, 2012  Fujitsu Limited
> Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
> Copyright (C) 2005, 2011, 2020-2022  NEC Corporation
> Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
> Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
> Copyright (C) 2015, 2021  VMware, Inc.
> This program is free software, covered by the GNU General Public License,
> and you are welcome to change it and/or distribute copies of it under
> certain conditions.  Enter "help copying" to see the conditions.
> This program has absolutely no warranty.  Enter "help warranty" for details.
>
> NOTE: setting vabits_actual to: 48
>
> WARNING: kimage_voffset cannot be determined from the dumpfile.
>        Try using the command line option: --machdep kimage_voffset=<addr>
> GNU gdb (GDB) 10.2
> Copyright (C) 2021 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> Type "show copying" and "show warranty" for details.
> This GDB was configured as "--host=x86_64-pc-linux-gnu
> --target=aarch64-elf-linux".
> Type "show configuration" for configuration details.
> Find the GDB manual and other documentation resources online at:
>     <http://www.gnu.org/software/gdb/documentation/>.
>
> For help, type "help".
> Type "apropos word" to search for commands related to "word"...
>
> crash: read error: kernel virtual address: ffff80001083d4a0  type:
> "kernel_config_data"
> WARNING: cannot read kernel_config_data
> crash: read error: kernel virtual address: ffff80001170e798  type: "possible"
> WARNING: cannot read cpu_possible_map
> crash: read error: kernel virtual address: ffff80001170e7a8  type: "present"
> WARNING: cannot read cpu_present_map
> crash: read error: kernel virtual address: ffff80001170e788  type: "online"
> WARNING: cannot read cpu_online_map
> crash: read error: kernel virtual address: ffff80001170e7c0  type: "active"
> WARNING: cannot read cpu_active_map
> crash: read error: kernel virtual address: ffff8000122e00f0  type:
> "shadow_timekeeper xtime_sec"
> crash: read error: kernel virtual address: ffff80001171dc04  type: "init_uts_ns"
> crash: vmlinux and /var/tmp/ramdump_elf_m2ivkg do not match!
>
> Usage:
>
>   crash [OPTION]... NAMELIST MEMORY-IMAGE[@ADDRESS]     (dumpfile form)
>   crash [OPTION]... [NAMELIST]                          (live system form)
>
> Enter "crash -h" for details.
>
> Qianli Zhao <zhaoqianligood@xxxxxxxxx> 于2022年6月24日周五 00:14写道:
> >
> > From: Qianli Zhao <qianli.zhao@xxxxxxxxxx>
> >
> > Setting st->_stext_vmlinux to UNINITIALIZED to search for "_stext" from the vmlinux
> > Without the patch, if we do not enable kaslr, will get the wrong
> > MODULES/VMALLOC ranges, cause parsing dump failure
> >
> > Signed-off-by: Qianli Zhao <qianli.zhao@xxxxxxxxxx>
> > ---
> >  arm64.c | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/arm64.c b/arm64.c
> > index 0f615cf..4458a66 100644
> > --- a/arm64.c
> > +++ b/arm64.c
> > @@ -149,6 +149,9 @@ arm64_init(int when)
> >
> >                 ms = machdep->machspec;
> >
> > +               if (ms->VA_BITS_ACTUAL)
> > +                       st->_stext_vmlinux = UNINITIALIZED;
> > +
> >                 if (!ms->kimage_voffset && STREQ(pc->live_memsrc, "/dev/crash"))
> >                         ioctl(pc->mfd, DEV_CRASH_ARCH_DATA, &ms->kimage_voffset);
> >
> > --
> > 2.17.1
> >

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://listman.redhat.com/mailman/listinfo/crash-utility
Contribution Guidelines: https://github.com/crash-utility/crash/wiki




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux