ACPICA: Restructure includes into public/private
[linux-2.6-block.git] / drivers / acpi / parser / psparse.c
index 68e932f215ea5ef73c407a241a4d11d3367897fa..9da48fdb811a4045be568daa233906ad52ac3d9b 100644 (file)
@@ -51,6 +51,7 @@
  */
 
 #include <acpi/acpi.h>
+#include <acpi/accommon.h>
 #include <acpi/acparser.h>
 #include <acpi/acdispat.h>
 #include <acpi/amlcode.h>
@@ -447,10 +448,22 @@ acpi_status acpi_ps_parse_aml(struct acpi_walk_state *walk_state)
                          walk_state, walk_state->parser_state.aml,
                          walk_state->parser_state.aml_size));
 
+       if (!walk_state->parser_state.aml) {
+               return_ACPI_STATUS(AE_NULL_OBJECT);
+       }
+
        /* Create and initialize a new thread state */
 
        thread = acpi_ut_create_thread_state();
        if (!thread) {
+               if (walk_state->method_desc) {
+
+                       /* Executing a control method - additional cleanup */
+
+                       acpi_ds_terminate_control_method(
+                               walk_state->method_desc, walk_state);
+               }
+
                acpi_ds_delete_walk_state(walk_state);
                return_ACPI_STATUS(AE_NO_MEMORY);
        }