Re: [patch 07/12] Make the PCI remove routines safe for failed hot-plug

From: Greg KH <gregkh_at_suse.de>
Date: 2005-03-19 16:14:46
On Fri, Mar 18, 2005 at 02:11:44PM -0800, Rajesh Shah wrote:
> diff -puN drivers/pci/remove.c~pci-remove-device-hotplug-safe drivers/pci/remove.c
> --- linux-2.6.11-mm4-iohp/drivers/pci/remove.c~pci-remove-device-hotplug-safe	2005-03-16 13:07:22.667319764 -0800
> +++ linux-2.6.11-mm4-iohp-rshah1/drivers/pci/remove.c	2005-03-16 13:07:22.775718200 -0800
> @@ -26,17 +26,21 @@ static void pci_free_resources(struct pc
>  
>  static void pci_destroy_dev(struct pci_dev *dev)
>  {
> -	pci_proc_detach_device(dev);
> -	pci_remove_sysfs_dev_files(dev);
> -	device_unregister(&dev->dev);
> +	if (!list_empty(&dev->global_list)) {
> +		pci_proc_detach_device(dev);
> +		pci_remove_sysfs_dev_files(dev);
> +		device_unregister(&dev->dev);
> +		spin_lock(&pci_bus_lock);
> +		list_del(&dev->global_list);
> +		dev->global_list.next = dev->global_list.prev = NULL;
> +		spin_unlock(&pci_bus_lock);
> +	}
>  
>  	/* Remove the device from the device lists, and prevent any further
>  	 * list accesses from this device */
>  	spin_lock(&pci_bus_lock);
>  	list_del(&dev->bus_list);
> -	list_del(&dev->global_list);
>  	dev->bus_list.next = dev->bus_list.prev = NULL;
> -	dev->global_list.next = dev->global_list.prev = NULL;
>  	spin_unlock(&pci_bus_lock);
>  
>  	pci_free_resources(dev);

I did have a comment about this code at first glance, but in reviewing
it again, nevermind, it looks fine...

thanks,

greg k-h
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Sat Mar 19 00:16:37 2005

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:37 EST