(void) acpi_ut_release_owner_id (owner_id); 
acpi_ns_delete_namespace_by_owner (	acpi_owner_id                    owner_id){	struct acpi_namespace_node      *child_node;	struct acpi_namespace_node      *deletion_node;	u32                             level;	struct acpi_namespace_node      *parent_node;	ACPI_FUNCTION_TRACE_U32 ("ns_delete_namespace_by_owner", owner_id);	parent_node   = acpi_gbl_root_node;	child_node    = NULL;	deletion_node = NULL;	level         = 1;	/*	 * Traverse the tree of nodes until we bubble back up	 * to where we started.	 */	while (level > 0) {		/*		 * Get the next child of this parent node. When child_node is NULL,		 * the first child of the parent is returned		 */		child_node = acpi_ns_get_next_node (ACPI_TYPE_ANY, parent_node, child_node);		if (deletion_node) {			acpi_ns_remove_reference (deletion_node);			deletion_node = NULL;		}		if (child_node) {			if (child_node->owner_id == owner_id) {				/* Found a matching child node - detach any attached object */				acpi_ns_detach_object (child_node);			}			/* Check if this node has any children */			if (acpi_ns_get_next_node (ACPI_TYPE_ANY, child_node, NULL)) {				/*				 * There is at least one child of this node,				 * visit the node				 */				level++;				parent_node = child_node;				child_node = NULL;			}			else if (child_node->owner_id == owner_id) {				deletion_node = child_node;			}		}		else {			/*			 * No more children of this parent node.			 * Move up to the grandparent.			 */			level--;			if (level != 0) {				if (parent_node->owner_id == owner_id) {					deletion_node = parent_node;				}			}			/* New "last child" is this parent node */			child_node = parent_node;			/* Move up the tree to the grandparent */			parent_node = acpi_ns_get_parent_node (parent_node);		}	}	(void) acpi_ut_release_owner_id (owner_id);	return_VOID;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/0c9938cc75057c0fca1af55a55dcfc2842436695/nsalloc.c/clean/drivers/acpi/namespace/nsalloc.c