diff --git a/linux-ramdump-parser-v2/ramdump.py b/linux-ramdump-parser-v2/ramdump.py index d452fbc0b73705098bf675c3bfe7dfa36c0bb3c2..e1b779fa4fc2f9e3be41b91e73632b9a024a5ebd 100644 --- a/linux-ramdump-parser-v2/ramdump.py +++ b/linux-ramdump-parser-v2/ramdump.py @@ -115,7 +115,12 @@ class RamDump(): mask = (self.ramdump.thread_size) - 1 high = (low + mask) & (~mask) - if (fp < low or fp > high or fp & 0xf): + # Ignore NON HLOS addresses and return from the function without + # unwinding the frame pointer. HLOS addresses are expected to be + # greater than or equal to page_offset. NON HLOS addresses have 1-1 + # virtual to physical mapping and may not have physical addresses + # equal to or greater than page_offset anytime soon. + if (fp < low or fp > high or fp & 0xf or fp < self.ramdump.page_offset): return frame.sp = fp + 0x10