From 1f93ecadba6e529cce70dfa4b05055c33232d577 Mon Sep 17 00:00:00 2001 From: Laura Abbott <lauraa@codeaurora.org> Date: Tue, 15 Apr 2014 19:10:47 -0700 Subject: [PATCH] linux-ramdump-parser-v2: Check for cycles in pagetypeinfo Because pages are constantly being allocated and freed, the pagetypeinfo may not be in a consistent state when dumps are collected. Check to make sure there are no cycles in the list for more than just the next item. Change-Id: Ie986bbb78f39923dbe11ef0446912518bc6c7fc5 --- linux-ramdump-parser-v2/parsers/pagetypeinfo.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/linux-ramdump-parser-v2/parsers/pagetypeinfo.py b/linux-ramdump-parser-v2/parsers/pagetypeinfo.py index 841d57d..ea6c245 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) -- GitLab