Blame SOURCES/0024-Fix-page-offset-issue-when-converting-physical-to-vi.patch

acf3ec
From d0726d96b92e5dacd1df56756e168a50a4e62589 Mon Sep 17 00:00:00 2001
acf3ec
From: Tao Liu <ltao@redhat.com>
acf3ec
Date: Mon, 19 Sep 2022 17:49:22 +0800
acf3ec
Subject: [PATCH 24/28] Fix page offset issue when converting physical to
acf3ec
 virtual address
acf3ec
acf3ec
When trying to convert a physical address to its virtual
acf3ec
address in dump_vmap_area() and dump_vmlist(), the vi->retval
acf3ec
is added by 2 values: the page aligned address "pcheck"
acf3ec
and page offset address "PAGEOFFSET(paddr)".
acf3ec
acf3ec
However "paddr" is given by "pcheck", is also page aligned,
acf3ec
so "PAGEOFFSET(paddr)" is always 0.
acf3ec
acf3ec
In this patch, we will use PAGEOFFSET(vi->spec_addr) to give the
acf3ec
page offset, vi->spec_addr is the physical address we'd like
acf3ec
to convert, which contains the correct page offset.
acf3ec
acf3ec
Signed-off-by: Tao Liu <ltao@redhat.com>
acf3ec
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
acf3ec
---
acf3ec
 memory.c | 4 ++--
acf3ec
 1 file changed, 2 insertions(+), 2 deletions(-)
acf3ec
acf3ec
diff --git a/memory.c b/memory.c
acf3ec
index e44b59d2e805..a60c3f9493f6 100644
acf3ec
--- a/memory.c
acf3ec
+++ b/memory.c
acf3ec
@@ -8861,7 +8861,7 @@ dump_vmlist(struct meminfo *vi)
acf3ec
 				    (vi->spec_addr < (paddr+PAGESIZE()))) {
acf3ec
 					if (vi->flags & GET_PHYS_TO_VMALLOC) {
acf3ec
 						vi->retval = pcheck +
acf3ec
-						    PAGEOFFSET(paddr);
acf3ec
+						    PAGEOFFSET(vi->spec_addr);
acf3ec
 						return;
acf3ec
 				        } else
acf3ec
 						fprintf(fp,
acf3ec
@@ -9010,7 +9010,7 @@ dump_vmap_area(struct meminfo *vi)
acf3ec
 				    (vi->spec_addr < (paddr+PAGESIZE()))) {
acf3ec
 					if (vi->flags & GET_PHYS_TO_VMALLOC) {
acf3ec
 						vi->retval = pcheck +
acf3ec
-						    PAGEOFFSET(paddr);
acf3ec
+						    PAGEOFFSET(vi->spec_addr);
acf3ec
 						FREEBUF(ld->list_ptr);
acf3ec
 						return;
acf3ec
 				        } else
acf3ec
-- 
acf3ec
2.37.1
acf3ec