diff --git a/linux-ramdump-parser-v2/parsers/pagetypeinfo.py b/linux-ramdump-parser-v2/parsers/pagetypeinfo.py index 841d57dba17e0cde3a92713ec98466358005dd38..ea6c245f1eecc30a669b0731b58899487661dbc6 100644 --- a/linux-ramdump-parser-v2/parsers/pagetypeinfo.py +++ b/linux-ramdump-parser-v2/parsers/pagetypeinfo.py @@ -47,17 +47,18 @@ class Pagetypeinfo(RamParser): curr = orig_free_list pg_count = -1 first = True + seen = [] while True: pg_count = pg_count + 1 + seen.append(curr) next_p = ramdump.read_word(curr) - if next_p == curr: - if not first: - is_corrupt = True - break first = False curr = next_p if curr == orig_free_list: break + if next_p in seen: + is_corrupt = True + break nums = nums + ('{0:6}'.format(pg_count)) total_type_bytes = total_type_bytes + \ pg_count * 4096 * (2 ** order)