virtio_pci: unregister virtio device at device remove
authorAnthony Liguori <aliguori@us.ibm.com>
Thu, 20 Mar 2008 01:35:04 +0000 (20:35 -0500)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 28 Mar 2008 00:05:51 +0000 (11:05 +1100)
Make sure to call unregister_virtio_device() when a virtio device is removed.
Otherwise, virtio_pci.ko cannot be rmmod'd.

This was spotted by Marcelo Tosatti.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/virtio/virtio_pci.c

index 59a8f73dec730421c3dcff6b52c0c9de59798b43..6c8ecde6aad188a17b44030e1769ac2310564605 100644 (file)
@@ -388,6 +388,7 @@ static void __devexit virtio_pci_remove(struct pci_dev *pci_dev)
 {
        struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev);
 
 {
        struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev);
 
+       unregister_virtio_device(&vp_dev->vdev);
        free_irq(pci_dev->irq, vp_dev);
        pci_set_drvdata(pci_dev, NULL);
        pci_iounmap(pci_dev, vp_dev->ioaddr);
        free_irq(pci_dev->irq, vp_dev);
        pci_set_drvdata(pci_dev, NULL);
        pci_iounmap(pci_dev, vp_dev->ioaddr);