aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2008-04-10 11:06:39 -0400
committerLen Brown <len.brown@intel.com>2008-04-22 14:29:26 -0400
commitd8841647de7c4aa3f3ff5b8b8c4a3f042e848ff0 (patch)
treec13984a05b5e742e86f07a762162d634404ec8ef /drivers/acpi
parent98af37fba9b3e601ca4bded51ef51a2be4e8c97b (diff)
ACPICA: Add error checks to prevent faults
Added additional error checking to prevent run-time faults. Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/executer/exstore.c12
-rw-r--r--drivers/acpi/namespace/nsnames.c6
2 files changed, 16 insertions, 2 deletions
diff --git a/drivers/acpi/executer/exstore.c b/drivers/acpi/executer/exstore.c
index 912889ed45ed..d860f9c6172c 100644
--- a/drivers/acpi/executer/exstore.c
+++ b/drivers/acpi/executer/exstore.c
@@ -209,8 +209,16 @@ acpi_ex_do_debug_object(union acpi_operand_object *source_desc,
209 object, level + 4, 0); 209 object, level + 4, 0);
210 } 210 }
211 } else if (source_desc->reference.node) { 211 } else if (source_desc->reference.node) {
212 acpi_ex_do_debug_object((source_desc->reference.node)-> 212 if (ACPI_GET_DESCRIPTOR_TYPE
213 object, level + 4, 0); 213 (source_desc->reference.node) !=
214 ACPI_DESC_TYPE_NAMED) {
215 ACPI_DEBUG_PRINT_RAW((ACPI_DB_DEBUG_OBJECT,
216 " %p - Not a valid namespace node\n"));
217 } else {
218 acpi_ex_do_debug_object((source_desc->reference.
219 node)->object,
220 level + 4, 0);
221 }
214 } 222 }
215 break; 223 break;
216 224
diff --git a/drivers/acpi/namespace/nsnames.c b/drivers/acpi/namespace/nsnames.c
index cbd94af08cc5..e14a1412656b 100644
--- a/drivers/acpi/namespace/nsnames.c
+++ b/drivers/acpi/namespace/nsnames.c
@@ -180,6 +180,12 @@ acpi_size acpi_ns_get_pathname_length(struct acpi_namespace_node *node)
180 next_node = node; 180 next_node = node;
181 181
182 while (next_node && (next_node != acpi_gbl_root_node)) { 182 while (next_node && (next_node != acpi_gbl_root_node)) {
183 if (ACPI_GET_DESCRIPTOR_TYPE(next_node) != ACPI_DESC_TYPE_NAMED) {
184 ACPI_ERROR((AE_INFO,
185 "Invalid NS Node (%X) while traversing path",
186 next_node));
187 return 0;
188 }
183 size += ACPI_PATH_SEGMENT_LENGTH; 189 size += ACPI_PATH_SEGMENT_LENGTH;
184 next_node = acpi_ns_get_parent_node(next_node); 190 next_node = acpi_ns_get_parent_node(next_node);
185 } 191 }