From d544c5cfb43064711924b357bed7f70cca50a5a3 Mon Sep 17 00:00:00 2001 From: Osvaldo Banuelos <osvaldob@codeaurora.org> Date: Tue, 3 Jan 2017 13:10:13 -0800 Subject: [PATCH] lrdp-v2: cpr3_info: sanity check CPR controller pointer Check the validity of the CPR controller pointer to make sure parsing is attempted only on actual CPR controller structures. CRs-Fixed: 1085156 Change-Id: Ie0970cd5458d169768f4c065cc5ee79e8ad93160 --- linux-ramdump-parser-v2/parsers/cpr3_info.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/linux-ramdump-parser-v2/parsers/cpr3_info.py b/linux-ramdump-parser-v2/parsers/cpr3_info.py index ca5d9dd..3f0be29 100644 --- a/linux-ramdump-parser-v2/parsers/cpr3_info.py +++ b/linux-ramdump-parser-v2/parsers/cpr3_info.py @@ -430,9 +430,19 @@ class CPR3Info(RamParser): else: cpr_mode = "closed-loop" - tmp = "" - if cpr_controller_name is None: + thread_addr = self.ramdump.read_word( + ctrl_addr + + self.ramdump.field_offset( + 'struct cpr3_controller', 'thread')) + if thread_addr is None: return + thread_ctrl_addr = self.ramdump.read_word( + thread_addr + + self.ramdump.field_offset('struct cpr3_thread', 'ctrl')) + + if cpr_controller_name is None or thread_ctrl_addr != ctrl_addr: + return + tmp = "" tmp += "=" * 80 + "\n" tmp += 'CPR3 controller state: %s\n' % cpr_controller_name tmp += "=" * 80 + "\n" @@ -464,10 +474,6 @@ class CPR3Info(RamParser): self.output.append("\nCPR aggregated voltages:\n") self.dump_cpr3_corner_info(aggr_corner_addr, 0, 0, 0) - thread_addr = self.ramdump.read_word( - ctrl_addr + - self.ramdump.field_offset( - 'struct cpr3_controller', 'thread')) thread_count = self.ramdump.read_int( ctrl_addr + self.ramdump.field_offset( -- GitLab