From 300f50eefd2c8b2e2591d44949afaec0444a46a4 Mon Sep 17 00:00:00 2001 From: Liam Mark <lmark@codeaurora.org> Date: Fri, 24 Jun 2016 11:25:45 -0700 Subject: [PATCH] lrdp-v2: check for NULL pgtbl_ops Ensure we don't try to parse the page tables for an arm_smmu_domain where the pgtbl_ops is NULL. CRs-Fixed: 1034128 Change-Id: If9e63e27a052ed45ad3c187983311acdc3376579 --- linux-ramdump-parser-v2/iommulib.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/linux-ramdump-parser-v2/iommulib.py b/linux-ramdump-parser-v2/iommulib.py index 585f9e2..6124734 100644 --- a/linux-ramdump-parser-v2/iommulib.py +++ b/linux-ramdump-parser-v2/iommulib.py @@ -96,18 +96,22 @@ class IommuLib(object): pgtbl_ops_ptr = self.ramdump.read_structure_field( arm_smmu_domain_ptr, 'struct arm_smmu_domain', 'pgtbl_ops') - io_pgtable_ptr = self.ramdump.container_of( - pgtbl_ops_ptr, 'struct io_pgtable', 'ops') - - arm_lpae_io_pgtable_ptr = self.ramdump.container_of( - io_pgtable_ptr, 'struct arm_lpae_io_pgtable', 'iop') - - pg_table = self.ramdump.read_structure_field( - arm_lpae_io_pgtable_ptr, 'struct arm_lpae_io_pgtable', 'pgd') - - level = self.ramdump.read_structure_field( - arm_lpae_io_pgtable_ptr, 'struct arm_lpae_io_pgtable', - 'levels') + pg_table = 0 + level = 0 + if pgtbl_ops_ptr != 0: + io_pgtable_ptr = self.ramdump.container_of( + pgtbl_ops_ptr, 'struct io_pgtable', 'ops') + + arm_lpae_io_pgtable_ptr = self.ramdump.container_of( + io_pgtable_ptr, 'struct arm_lpae_io_pgtable', 'iop') + + pg_table = self.ramdump.read_structure_field( + arm_lpae_io_pgtable_ptr, 'struct arm_lpae_io_pgtable', + 'pgd') + + level = self.ramdump.read_structure_field( + arm_lpae_io_pgtable_ptr, 'struct arm_lpae_io_pgtable', + 'levels') domain_create = Domain(pg_table, 0, [], client_name, ARM_SMMU_DOMAIN, level) -- GitLab