aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/virtio/virtio_pci_legacy.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/virtio/virtio_pci_legacy.c')
-rw-r--r--drivers/virtio/virtio_pci_legacy.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/virtio/virtio_pci_legacy.c b/drivers/virtio/virtio_pci_legacy.c
index 6c76f0f5658c..a5486e65e04b 100644
--- a/drivers/virtio/virtio_pci_legacy.c
+++ b/drivers/virtio/virtio_pci_legacy.c
@@ -211,6 +211,17 @@ static const struct virtio_config_ops virtio_pci_config_ops = {
211 .set_vq_affinity = vp_set_vq_affinity, 211 .set_vq_affinity = vp_set_vq_affinity,
212}; 212};
213 213
214static void virtio_pci_release_dev(struct device *_d)
215{
216 struct virtio_device *vdev = dev_to_virtio(_d);
217 struct virtio_pci_device *vp_dev = to_vp_device(vdev);
218
219 /* As struct device is a kobject, it's not safe to
220 * free the memory (including the reference counter itself)
221 * until it's release callback. */
222 kfree(vp_dev);
223}
224
214/* the PCI probing function */ 225/* the PCI probing function */
215int virtio_pci_legacy_probe(struct pci_dev *pci_dev, 226int virtio_pci_legacy_probe(struct pci_dev *pci_dev,
216 const struct pci_device_id *id) 227 const struct pci_device_id *id)
@@ -302,5 +313,4 @@ void virtio_pci_legacy_remove(struct pci_dev *pci_dev)
302 pci_iounmap(pci_dev, vp_dev->ioaddr); 313 pci_iounmap(pci_dev, vp_dev->ioaddr);
303 pci_release_regions(pci_dev); 314 pci_release_regions(pci_dev);
304 pci_disable_device(pci_dev); 315 pci_disable_device(pci_dev);
305 kfree(vp_dev);
306} 316}