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)