return_VOID; 
return (AE_BAD_PARAMETER); 
void acpi_ds_terminate_control_method(struct acpi_walk_state *walk_state){	union acpi_operand_object *obj_desc;	struct acpi_namespace_node *method_node;	acpi_status status;	ACPI_FUNCTION_TRACE_PTR("ds_terminate_control_method", walk_state);	if (!walk_state) {		return_VOID;	}	/* The current method object was saved in the walk state */	obj_desc = walk_state->method_desc;	if (!obj_desc) {		return_VOID;	}	/* Delete all arguments and locals */	acpi_ds_method_data_delete_all(walk_state);	/*	 * Lock the parser while we terminate this method.	 * If this is the last thread executing the method,	 * we have additional cleanup to perform	 */	status = acpi_ut_acquire_mutex(ACPI_MTX_PARSER);	if (ACPI_FAILURE(status)) {		return_VOID;	}	/* Signal completion of the execution of this method if necessary */	if (walk_state->method_desc->method.semaphore) {		status =		    acpi_os_signal_semaphore(walk_state->method_desc->method.					     semaphore, 1);		if (ACPI_FAILURE(status)) {			ACPI_REPORT_ERROR(("Could not signal method semaphore\n"));			status = AE_OK;			/* Ignore error and continue cleanup */		}	}	if (walk_state->method_desc->method.thread_count) {		ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH,				  "*** Not deleting method namespace, there are still %d threads\n",				  walk_state->method_desc->method.				  thread_count));	}	if (!walk_state->method_desc->method.thread_count) {		/*		 * Support to dynamically change a method from not_serialized to		 * Serialized if it appears that the method is written foolishly and		 * does not support multiple thread execution.  The best example of this		 * is if such a method creates namespace objects and blocks.  A second		 * thread will fail with an AE_ALREADY_EXISTS exception		 *		 * This code is here because we must wait until the last thread exits		 * before creating the synchronization semaphore.		 */		if ((walk_state->method_desc->method.concurrency == 1) &&		    (!walk_state->method_desc->method.semaphore)) {			status = acpi_os_create_semaphore(1, 1,							  &walk_state->							  method_desc->method.							  semaphore);		}		/*		 * There are no more threads executing this method.  Perform		 * additional cleanup.		 *		 * The method Node is stored in the walk state		 */		method_node = walk_state->method_node;		/*		 * Delete any namespace entries created immediately underneath		 * the method		 */		status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);		if (ACPI_FAILURE(status)) {			goto cleanup;		}		if (method_node->child) {			acpi_ns_delete_namespace_subtree(method_node);		}		/*		 * Delete any namespace entries created anywhere else within		 * the namespace		 */		acpi_ns_delete_namespace_by_owner(walk_state->method_desc->						  method.owner_id);		status = acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);		acpi_ut_release_owner_id(&walk_state->method_desc->method.					 owner_id);		if (ACPI_FAILURE(status)) {			goto cleanup;		}	}cleanup:	acpi_ut_release_mutex (ACPI_MTX_PARSER);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/a94f18810f52d3a6de0a09bee0c7258b62eca262/dsmethod.c/buggy/drivers/acpi/dispatcher/dsmethod.c