From 26d3f7255daf1263e0bdedc39b0f2f6427256f45 Mon Sep 17 00:00:00 2001
From: Mahesh Komuravelli <mkomurav@codeaurora.org>
Date: Fri, 28 Sep 2018 19:40:34 +0530
Subject: [PATCH] lrdp_v2 : Fix for broken timerlist parser

Handle Lookup of delayed work function timers for dynamic modules

Change-Id: I5b771f8ec63f26847b223e8ca30c2695cb853312
Signed-off-by: Mahesh Komuravelli <mkomurav@codeaurora.org>
---
 linux-ramdump-parser-v2/parsers/timerlist.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/linux-ramdump-parser-v2/parsers/timerlist.py b/linux-ramdump-parser-v2/parsers/timerlist.py
index 187c361..5d6ba3c 100644
--- a/linux-ramdump-parser-v2/parsers/timerlist.py
+++ b/linux-ramdump-parser-v2/parsers/timerlist.py
@@ -66,8 +66,11 @@ class TimerList(RamParser) :
             timer_list_offset = self.ramdump.field_offset('struct delayed_work', 'timer')
             work_addr = node - timer_list_offset
             func_addr = work_addr + self.ramdump.field_offset('struct work_struct', 'func')
-            work_func = self.ramdump.unwind_lookup(self.ramdump.read_word(func_addr))[0]
-            data += " / " + work_func
+            try:
+                work_func = self.ramdump.unwind_lookup(self.ramdump.read_word(func_addr))[0]
+                data += " / " + work_func
+            except TypeError:
+                data += " / " + hex(self.ramdump.read_word(func_addr)) + "<MODULE>"
 
         if not self.timer_42:
             timer_base_addr = node + self.ramdump.field_offset(
-- 
GitLab