Messages in this thread Patch in this message | | | Subject | [PATCH] virtio: make PCI devices take a virtio_pci module ref | From | Mark McLoughlin <> | Date | Thu, 04 Dec 2008 12:44:31 +0000 |
| |
Nothing takes a ref on virtio_pci, so even if you have devices in use, rmmod will attempt to unload the module.
Fix by simply making each device take a ref on the module.
Signed-off-by: Mark McLoughlin <markmc@redhat.com> Reported-by: Michael Tokarev <mjt@tls.msk.ru> --- drivers/virtio/virtio_pci.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c index c7dc37c..147a17f 100644 --- a/drivers/virtio/virtio_pci.c +++ b/drivers/virtio/virtio_pci.c @@ -322,6 +322,9 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev, return -ENODEV; } + if (!try_module_get(THIS_MODULE)) + return -ENODEV; + /* allocate our structure and fill it out */ vp_dev = kzalloc(sizeof(struct virtio_pci_device), GFP_KERNEL); if (vp_dev == NULL) @@ -393,6 +396,7 @@ static void __devexit virtio_pci_remove(struct pci_dev *pci_dev) pci_release_regions(pci_dev); pci_disable_device(pci_dev); kfree(vp_dev); + module_put(THIS_MODULE); } #ifdef CONFIG_PM -- 1.6.0.3
| |