|
@@ -1582,6 +1582,10 @@ static void hv_eject_device_work(struct work_struct *work)
|
|
pci_dev_put(pdev);
|
|
pci_dev_put(pdev);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ spin_lock_irqsave(&hpdev->hbus->device_list_lock, flags);
|
|
|
|
+ list_del(&hpdev->list_entry);
|
|
|
|
+ spin_unlock_irqrestore(&hpdev->hbus->device_list_lock, flags);
|
|
|
|
+
|
|
memset(&ctxt, 0, sizeof(ctxt));
|
|
memset(&ctxt, 0, sizeof(ctxt));
|
|
ejct_pkt = (struct pci_eject_response *)&ctxt.pkt.message;
|
|
ejct_pkt = (struct pci_eject_response *)&ctxt.pkt.message;
|
|
ejct_pkt->message_type.type = PCI_EJECTION_COMPLETE;
|
|
ejct_pkt->message_type.type = PCI_EJECTION_COMPLETE;
|
|
@@ -1590,10 +1594,6 @@ static void hv_eject_device_work(struct work_struct *work)
|
|
sizeof(*ejct_pkt), (unsigned long)&ctxt.pkt,
|
|
sizeof(*ejct_pkt), (unsigned long)&ctxt.pkt,
|
|
VM_PKT_DATA_INBAND, 0);
|
|
VM_PKT_DATA_INBAND, 0);
|
|
|
|
|
|
- spin_lock_irqsave(&hpdev->hbus->device_list_lock, flags);
|
|
|
|
- list_del(&hpdev->list_entry);
|
|
|
|
- spin_unlock_irqrestore(&hpdev->hbus->device_list_lock, flags);
|
|
|
|
-
|
|
|
|
put_pcichild(hpdev, hv_pcidev_ref_childlist);
|
|
put_pcichild(hpdev, hv_pcidev_ref_childlist);
|
|
put_pcichild(hpdev, hv_pcidev_ref_pnp);
|
|
put_pcichild(hpdev, hv_pcidev_ref_pnp);
|
|
put_hvpcibus(hpdev->hbus);
|
|
put_hvpcibus(hpdev->hbus);
|