diff --git a/drivers/acpi/dispatcher/dsmethod.c b/drivers/acpi/dispatcher/dsmethod.c
index 8b67a91..77fcfc3 100644
--- a/drivers/acpi/dispatcher/dsmethod.c
+++ b/drivers/acpi/dispatcher/dsmethod.c
@@ -235,16 +235,6 @@
 		    acpi_ex_system_wait_semaphore(obj_desc->method.semaphore,
 						  ACPI_WAIT_FOREVER);
 	}
-	/*
-	 * allocate owner id for this method
-	 */
-	if (!obj_desc->method.thread_count) {
-		status = acpi_ut_allocate_owner_id (&obj_desc->method.owner_id);
-		if (ACPI_FAILURE (status)) {
-			return_ACPI_STATUS (status);
-		}
-	}
- 
 
 	/*
 	 * Increment the method parse tree thread count since it has been
@@ -299,6 +289,11 @@
 		return_ACPI_STATUS(AE_NULL_OBJECT);
 	}
 
+	status = acpi_ut_allocate_owner_id(&obj_desc->method.owner_id);
+	if (ACPI_FAILURE(status)) {
+		return_ACPI_STATUS(status);
+	}
+
 	/* Init for new method, wait on concurrency semaphore */
 
 	status = acpi_ds_begin_method_execution(method_node, obj_desc,
@@ -385,18 +380,22 @@
 
 	if (obj_desc->method.method_flags & AML_METHOD_INTERNAL_ONLY) {
 		status = obj_desc->method.implementation(next_walk_state);
+		return_ACPI_STATUS(status);
 	}
-	goto end;
 
-cleanup:
-	/* Decrement the thread count on the method parse tree */
+	return_ACPI_STATUS(AE_OK);
+
+	/* On error, we must delete the new walk state */
+
+      cleanup:
+	acpi_ut_release_owner_id(&obj_desc->method.owner_id);
 	if (next_walk_state && (next_walk_state->method_desc)) {
+		/* Decrement the thread count on the method parse tree */
+
 		next_walk_state->method_desc->method.thread_count--;
 	}
-	/* On error, we must delete the new walk state */
-	acpi_ds_terminate_control_method (next_walk_state);
-	acpi_ds_delete_walk_state (next_walk_state);
-end:
+	(void)acpi_ds_terminate_control_method(next_walk_state);
+	acpi_ds_delete_walk_state(next_walk_state);
 	return_ACPI_STATUS(status);
 }
 
@@ -480,7 +479,7 @@
  *
  * PARAMETERS:  walk_state          - State of the method
  *
- * RETURN:      None
+ * RETURN:      Status
  *
  * DESCRIPTION: Terminate a control method.  Delete everything that the method
  *              created, delete all locals and arguments, and delete the parse
@@ -488,7 +487,7 @@
  *
  ******************************************************************************/
 
-void acpi_ds_terminate_control_method(struct acpi_walk_state *walk_state)
+acpi_status acpi_ds_terminate_control_method(struct acpi_walk_state *walk_state)
 {
 	union acpi_operand_object *obj_desc;
 	struct acpi_namespace_node *method_node;
@@ -497,14 +496,14 @@
 	ACPI_FUNCTION_TRACE_PTR("ds_terminate_control_method", walk_state);
 
 	if (!walk_state) {
-		return_VOID;
+		return (AE_BAD_PARAMETER);
 	}
 
 	/* The current method object was saved in the walk state */
 
 	obj_desc = walk_state->method_desc;
 	if (!obj_desc) {
-		return_VOID;
+		return_ACPI_STATUS(AE_OK);
 	}
 
 	/* Delete all arguments and locals */
@@ -518,7 +517,7 @@
 	 */
 	status = acpi_ut_acquire_mutex(ACPI_MTX_PARSER);
 	if (ACPI_FAILURE(status)) {
-		return_VOID;
+		return_ACPI_STATUS(status);
 	}
 
 	/* Signal completion of the execution of this method if necessary */
@@ -575,7 +574,7 @@
 		 */
 		status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
 		if (ACPI_FAILURE(status)) {
-			goto cleanup;
+			return_ACPI_STATUS(status);
 		}
 
 		if (method_node->child) {
@@ -593,9 +592,10 @@
 					 owner_id);
 
 		if (ACPI_FAILURE(status)) {
-			goto cleanup;
+			return_ACPI_STATUS(status);
 		}
 	}
-cleanup:
-	acpi_ut_release_mutex (ACPI_MTX_PARSER);
+
+	status = acpi_ut_release_mutex(ACPI_MTX_PARSER);
+	return_ACPI_STATUS(status);
 }
diff --git a/drivers/acpi/parser/psparse.c b/drivers/acpi/parser/psparse.c
index 3677130..3248051 100644
--- a/drivers/acpi/parser/psparse.c
+++ b/drivers/acpi/parser/psparse.c
@@ -438,6 +438,7 @@
 acpi_status acpi_ps_parse_aml(struct acpi_walk_state *walk_state)
 {
 	acpi_status status;
+	acpi_status terminate_status;
 	struct acpi_thread_state *thread;
 	struct acpi_thread_state *prev_walk_list = acpi_gbl_current_walk_list;
 	struct acpi_walk_state *previous_walk_state;
@@ -507,9 +508,6 @@
 						 walk_state->method_node, NULL,
 						 status);
 
-			/* Make sure that failed method will be cleaned as if it was executed */
-			walk_state->parse_flags |= ACPI_PARSE_EXECUTE;
-			
 			/* Check for possible multi-thread reentrancy problem */
 
 			if ((status == AE_ALREADY_EXISTS) &&
@@ -526,6 +524,14 @@
 			}
 		}
 
+		if (walk_state->method_desc) {
+			/* Decrement the thread count on the method parse tree */
+
+			if (walk_state->method_desc->method.thread_count) {
+				walk_state->method_desc->method.thread_count--;
+			}
+		}
+
 		/* We are done with this walk, move on to the parent if any */
 
 		walk_state = acpi_ds_pop_walk_state(thread);
@@ -540,10 +546,13 @@
 		 */
 		if ((walk_state->parse_flags & ACPI_PARSE_MODE_MASK) ==
 		    ACPI_PARSE_EXECUTE) {
-			if (walk_state->method_desc) {
-				walk_state->method_desc->method.thread_count--;
+			terminate_status =
+			    acpi_ds_terminate_control_method(walk_state);
+			if (ACPI_FAILURE(terminate_status)) {
+				ACPI_REPORT_ERROR(("Could not terminate control method properly\n"));
+
+				/* Ignore error and continue */
 			}
-			acpi_ds_terminate_control_method (walk_state);
 		}
 
 		/* Delete this walk state and all linked control states */
diff --git a/drivers/acpi/parser/psxface.c b/drivers/acpi/parser/psxface.c
index f6904bd..80c67f2 100644
--- a/drivers/acpi/parser/psxface.c
+++ b/drivers/acpi/parser/psxface.c
@@ -99,6 +99,16 @@
 	}
 
 	/*
+	 * Get a new owner_id for objects created by this method. Namespace
+	 * objects (such as Operation Regions) can be created during the
+	 * first pass parse.
+	 */
+	status = acpi_ut_allocate_owner_id(&info->obj_desc->method.owner_id);
+	if (ACPI_FAILURE(status)) {
+		return_ACPI_STATUS(status);
+	}
+
+	/*
 	 * The caller "owns" the parameters, so give each one an extra
 	 * reference
 	 */
@@ -129,6 +139,9 @@
 	status = acpi_ps_execute_pass(info);
 
       cleanup:
+	if (info->obj_desc->method.owner_id) {
+		acpi_ut_release_owner_id(&info->obj_desc->method.owner_id);
+	}
 
 	/* Take away the extra reference that we gave the parameters above */
 
diff --git a/drivers/acpi/utilities/utmisc.c b/drivers/acpi/utilities/utmisc.c
index c2f5b2a..f027502 100644
--- a/drivers/acpi/utilities/utmisc.c
+++ b/drivers/acpi/utilities/utmisc.c
@@ -67,8 +67,6 @@
 
 	ACPI_FUNCTION_TRACE("ut_allocate_owner_id");
 
-	WARN_ON(*owner_id);
-
 	/* Mutex for the global ID mask */
 
 	status = acpi_ut_acquire_mutex(ACPI_MTX_CACHES);
