File makedumpfile-Revert-kill-is_vmalloc_addr_x86_64.patch of Package makedumpfile.8642

From: Petr Tesarik <ptesarik@suse.com>
Date: Thu, 21 Dec 2017 13:38:33 +0100
Subject: Revert "x86_64: kill is_vmalloc_addr_x86_64()"
References: bsc#1068925, bsc#1099121
Upstream: never, upstream needs newer kernel

This reverts commit 8419f4d64fadc3015e3106eba95a8c2d71f259cb.
---
 arch/x86_64.c  |   14 +++++++++++++-
 makedumpfile.h |    3 ++-
 2 files changed, 15 insertions(+), 2 deletions(-)

--- a/arch/x86_64.c
+++ b/arch/x86_64.c
@@ -21,6 +21,17 @@
 extern struct vmap_pfns *gvmem_pfns;
 extern int nr_gvmem_pfns;
 
+int
+is_vmalloc_addr_x86_64(ulong vaddr)
+{
+	/*
+	 *  vmalloc, virtual memmap, and module space as VMALLOC space.
+	 */
+	return ((vaddr >= VMALLOC_START && vaddr <= VMALLOC_END)
+	    || (vaddr >= VMEMMAP_START && vaddr <= VMEMMAP_END)
+	    || (vaddr >= MODULES_VADDR && vaddr <= MODULES_END));
+}
+
 static unsigned long
 get_xen_p2m_mfn(void)
 {
@@ -76,7 +87,8 @@ get_phys_base_x86_64(void)
 	}
 
 	for (i = 0; get_pt_load(i, &phys_start, NULL, &virt_start, NULL); i++) {
-		if (virt_start >= __START_KERNEL_map) {
+		if ((virt_start >= __START_KERNEL_map) &&
+		    !(is_vmalloc_addr_x86_64(virt_start))) {
 
 			info->phys_base = phys_start -
 			    (virt_start & ~(__START_KERNEL_map));
--- a/makedumpfile.h
+++ b/makedumpfile.h
@@ -874,6 +874,7 @@ unsigned long long vaddr_to_paddr_x86(un
 #endif /* x86 */
 
 #ifdef __x86_64__
+int is_vmalloc_addr_x86_64(ulong vaddr);
 int get_phys_base_x86_64(void);
 int get_machdep_info_x86_64(void);
 int get_versiondep_info_x86_64(void);
@@ -883,7 +884,7 @@ unsigned long long vtop4_x86_64(unsigned
 #define get_machdep_info()	get_machdep_info_x86_64()
 #define get_versiondep_info()	get_versiondep_info_x86_64()
 #define vaddr_to_paddr(X)	vtop4_x86_64(X)
-#define is_phys_addr(X)		stub_true_ul(X)
+#define is_phys_addr(X)		(!is_vmalloc_addr_x86_64(X))
 #endif /* x86_64 */
 
 #ifdef __powerpc64__ /* powerpc64 */
openSUSE Build Service is sponsored by