diff options
| author | Mark McLoughlin <markmc@redhat.com> | 2008-12-15 07:58:27 -0500 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-01-06 13:44:34 -0500 |
| commit | 63d12556703f17817a46e140704360b29b851bad (patch) | |
| tree | be9741e515a075010e2fbb217ea0c41b85613ca2 /drivers/virtio | |
| parent | 0aa0dc41bfd993491c2344870eee7a3b218551fb (diff) | |
virtio: do not statically allocate root device
We shouldn't be statically allocating the root device object,
so dynamically allocate it using root_device_register()
instead.
Also avoids this warning from 'rmmod virtio_pci':
Device 'virtio-pci' does not have a release() function, it is broken and must be fixed
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>
Acked-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/virtio')
| -rw-r--r-- | drivers/virtio/virtio_pci.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c index 265fdf2d127..bef6b45e8a5 100644 --- a/drivers/virtio/virtio_pci.c +++ b/drivers/virtio/virtio_pci.c | |||
| @@ -73,10 +73,7 @@ MODULE_DEVICE_TABLE(pci, virtio_pci_id_table); | |||
| 73 | /* A PCI device has it's own struct device and so does a virtio device so | 73 | /* A PCI device has it's own struct device and so does a virtio device so |
| 74 | * we create a place for the virtio devices to show up in sysfs. I think it | 74 | * we create a place for the virtio devices to show up in sysfs. I think it |
| 75 | * would make more sense for virtio to not insist on having it's own device. */ | 75 | * would make more sense for virtio to not insist on having it's own device. */ |
| 76 | static struct device virtio_pci_root = { | 76 | static struct device *virtio_pci_root; |
| 77 | .parent = NULL, | ||
| 78 | .init_name = "virtio-pci", | ||
| 79 | }; | ||
| 80 | 77 | ||
| 81 | /* Convert a generic virtio device to our structure */ | 78 | /* Convert a generic virtio device to our structure */ |
| 82 | static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev) | 79 | static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev) |
| @@ -343,7 +340,7 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev, | |||
| 343 | if (vp_dev == NULL) | 340 | if (vp_dev == NULL) |
| 344 | return -ENOMEM; | 341 | return -ENOMEM; |
| 345 | 342 | ||
| 346 | vp_dev->vdev.dev.parent = &virtio_pci_root; | 343 | vp_dev->vdev.dev.parent = virtio_pci_root; |
| 347 | vp_dev->vdev.dev.release = virtio_pci_release_dev; | 344 | vp_dev->vdev.dev.release = virtio_pci_release_dev; |
| 348 | vp_dev->vdev.config = &virtio_pci_config_ops; | 345 | vp_dev->vdev.config = &virtio_pci_config_ops; |
| 349 | vp_dev->pci_dev = pci_dev; | 346 | vp_dev->pci_dev = pci_dev; |
| @@ -437,13 +434,13 @@ static int __init virtio_pci_init(void) | |||
| 437 | { | 434 | { |
| 438 | int err; | 435 | int err; |
| 439 | 436 | ||
| 440 | err = device_register(&virtio_pci_root); | 437 | virtio_pci_root = root_device_register("virtio-pci"); |
| 441 | if (err) | 438 | if (IS_ERR(virtio_pci_root)) |
| 442 | return err; | 439 | return PTR_ERR(virtio_pci_root); |
| 443 | 440 | ||
| 444 | err = pci_register_driver(&virtio_pci_driver); | 441 | err = pci_register_driver(&virtio_pci_driver); |
| 445 | if (err) | 442 | if (err) |
| 446 | device_unregister(&virtio_pci_root); | 443 | device_unregister(virtio_pci_root); |
| 447 | 444 | ||
| 448 | return err; | 445 | return err; |
| 449 | } | 446 | } |
| @@ -452,8 +449,8 @@ module_init(virtio_pci_init); | |||
| 452 | 449 | ||
| 453 | static void __exit virtio_pci_exit(void) | 450 | static void __exit virtio_pci_exit(void) |
| 454 | { | 451 | { |
| 455 | device_unregister(&virtio_pci_root); | ||
| 456 | pci_unregister_driver(&virtio_pci_driver); | 452 | pci_unregister_driver(&virtio_pci_driver); |
| 453 | root_device_unregister(virtio_pci_root); | ||
| 457 | } | 454 | } |
| 458 | 455 | ||
| 459 | module_exit(virtio_pci_exit); | 456 | module_exit(virtio_pci_exit); |
