Source: crash
Version: 7.1.7-1
Severity: serious
Tags: patch

The utility is probably working in its current shape for older kernel,
but not for newer:

|$ crash ../build-RT/vmlinux mem2
|
|crash 7.1.7
|Copyright (C) 2002-2016  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  NEC Corporation
|Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
|Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, 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.
|
|GNU gdb (GDB) 7.6
|Copyright (C) 2013 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 "x86_64-unknown-linux-gnu"...
|
|
|crash: cannot resolve "init_level4_pgt"

This was a v4.14 kernel. With the patch attached on the other hand, it
works again.
This change is part of 7.2.0. Can please have an update for unstable and
a backport for stable?

Sebastian
>From a16324a2f05c0947a83e26a5de7c756de4603da9 Mon Sep 17 00:00:00 2001
From: Dave Anderson <ander...@redhat.com>
Date: Thu, 6 Jul 2017 16:19:41 -0400
Subject: [PATCH] Fix for Linux 4.13-rc0 commit
 7fd8329ba502ef76dd91db561c7aed696b2c7720 "x86/boot/64: Rename init_level4_pgt
 and early_level4_pgt".  Without the patch, the crash session fails during
 initialization with the error message "crash: cannot resolve
 "init_level4_pgt". (ander...@redhat.com)

---
 x86_64.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/x86_64.c b/x86_64.c
index 1d23d784ad51..44d0c98660c0 100644
--- a/x86_64.c
+++ b/x86_64.c
@@ -1388,12 +1388,17 @@ static void
 x86_64_init_kernel_pgd(void)
 {
 	int i;
-	ulong init_level4_pgt;
+	ulong kernel_pgt = 0;
 
-	init_level4_pgt = symbol_value("init_level4_pgt");
+	if (kernel_symbol_exists("init_level4_pgt"))
+		kernel_pgt = symbol_value("init_level4_pgt");
+	else if (kernel_symbol_exists("init_top_pgt"))
+		kernel_pgt = symbol_value("init_top_pgt");
+	else
+		error(WARNING, "neither \"init_level4_pgt\" or \"init_top_pgt\" exist\n");
 
 	for (i = 0; i < NR_CPUS; i++) 
-		vt->kernel_pgd[i] = init_level4_pgt;
+		vt->kernel_pgd[i] = kernel_pgt;
 
 	FILL_PML4();
 }
-- 
2.15.1

Reply via email to