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

Greg KH
2005-03-19T05:14:46Z

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