Some architectures define PHYS_PFN_OFFSET to be != 0 (ARM for example). This
means that mem_map[0] is actually first page in kernel direct mapped view (which
is a valid page).

Change invalid pfn to be ULONGLONG_MAX instead of 0 to handle such cases.

Signed-off-by: Mika Westerberg <[email protected]>
---
 makedumpfile.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/makedumpfile.c b/makedumpfile.c
index a33bab6..89360bd 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -4383,7 +4383,8 @@ unsigned long long
 page_to_pfn(unsigned long page)
 {
        unsigned int num;
-       unsigned long long pfn = 0, index = 0;
+       unsigned long long pfn = ULONGLONG_MAX;
+       unsigned long long index = 0;
        struct mem_map_data *mmd;
 
        mmd = info->mem_map_data;
@@ -4398,7 +4399,7 @@ page_to_pfn(unsigned long page)
                pfn = mmd->pfn_start + index;
                break;
        }
-       if (!pfn) {
+       if (pfn == ULONGLONG_MAX) {
                ERRMSG("Can't convert the address of page descriptor (%lx) to 
pfn.\n", page);
                return ULONGLONG_MAX;
        }
-- 
1.5.6.5


_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

Reply via email to