diff options
author | Bob Moore <robert.moore@intel.com> | 2013-03-08 09:19:38 +0000 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-03-12 00:45:03 +0100 |
commit | c13085e519e8984fede41fa3d6a5502523b10996 (patch) | |
tree | c993b660f58d41ab46b93c4a810517de6f9ab072 /drivers/acpi/acpica/rsdump.c | |
parent | f6161aa153581da4a3867a2d1a7caf4be19b6ec9 (diff) | |
download | talos-op-linux-c13085e519e8984fede41fa3d6a5502523b10996.tar.gz talos-op-linux-c13085e519e8984fede41fa3d6a5502523b10996.zip |
ACPICA: Resource Mgr: Prevent infinite loops in resource walks
Add checks for zero-length resource descriptors in all code that
loops through a resource descriptor list. This prevents possible
infinite loops because the length is used to increment the traveral
pointer and detect the end-of-descriptor.
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/acpica/rsdump.c')
-rw-r--r-- | drivers/acpi/acpica/rsdump.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/rsdump.c b/drivers/acpi/acpica/rsdump.c index cab51445189d..b5fc0db2e87b 100644 --- a/drivers/acpi/acpica/rsdump.c +++ b/drivers/acpi/acpica/rsdump.c @@ -385,6 +385,14 @@ void acpi_rs_dump_resource_list(struct acpi_resource *resource_list) return; } + /* Sanity check the length. It must not be zero, or we loop forever */ + + if (!resource_list->length) { + acpi_os_printf + ("Invalid zero length descriptor in resource list\n"); + return; + } + /* Dump the resource descriptor */ if (type == ACPI_RESOURCE_TYPE_SERIAL_BUS) { |