interrupt_mode = (to_pcie_device(child))->interrupt_mode; put_device(child); device_unregister(child); } 
} while (status); 
void pcie_port_device_remove(struct pci_dev *dev){	struct list_head 		*head, *tmp;	struct device 			*parent, *child;	struct device_driver 		*driver;	struct pcie_port_service_driver *service_driver;	int interrupt_mode = PCIE_PORT_INTx_MODE;	parent = &dev->dev;	head = &parent->children;	tmp = head->next;	while (head != tmp) {		child = container_of(tmp, struct device, node);		tmp = tmp->next;		if (child->bus != &pcie_port_bus_type)			continue;		driver = child->driver;		if (driver) { 			service_driver = to_service_driver(driver);			if (service_driver->remove)  				service_driver->remove(to_pcie_device(child));		}		interrupt_mode = (to_pcie_device(child))->interrupt_mode;		put_device(child);		device_unregister(child);	}	/* Switch to INTx by default if MSI enabled */	if (interrupt_mode == PCIE_PORT_MSIX_MODE)		pci_disable_msix(dev);	else if (interrupt_mode == PCIE_PORT_MSI_MODE)		pci_disable_msi(dev);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/d0e2b4a0a9dd3eed71b56c47268bf4e40cff6d0f/portdrv_core.c/buggy/drivers/pci/pcie/portdrv_core.c