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,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