aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/vfio/vfio.c29
1 files changed, 7 insertions, 22 deletions
diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c
index c488da5db7c7..6d18c3cafdd4 100644
--- a/drivers/vfio/vfio.c
+++ b/drivers/vfio/vfio.c
@@ -494,27 +494,6 @@ static int vfio_group_nb_add_dev(struct vfio_group *group, struct device *dev)
494 return 0; 494 return 0;
495} 495}
496 496
497static int vfio_group_nb_del_dev(struct vfio_group *group, struct device *dev)
498{
499 struct vfio_device *device;
500
501 /*
502 * Expect to fall out here. If a device was in use, it would
503 * have been bound to a vfio sub-driver, which would have blocked
504 * in .remove at vfio_del_group_dev. Sanity check that we no
505 * longer track the device, so it's safe to remove.
506 */
507 device = vfio_group_get_device(group, dev);
508 if (likely(!device))
509 return 0;
510
511 WARN("Device %s removed from live group %d!\n", dev_name(dev),
512 iommu_group_id(group->iommu_group));
513
514 vfio_device_put(device);
515 return 0;
516}
517
518static int vfio_group_nb_verify(struct vfio_group *group, struct device *dev) 497static int vfio_group_nb_verify(struct vfio_group *group, struct device *dev)
519{ 498{
520 /* We don't care what happens when the group isn't in use */ 499 /* We don't care what happens when the group isn't in use */
@@ -545,7 +524,13 @@ static int vfio_iommu_group_notifier(struct notifier_block *nb,
545 vfio_group_nb_add_dev(group, dev); 524 vfio_group_nb_add_dev(group, dev);
546 break; 525 break;
547 case IOMMU_GROUP_NOTIFY_DEL_DEVICE: 526 case IOMMU_GROUP_NOTIFY_DEL_DEVICE:
548 vfio_group_nb_del_dev(group, dev); 527 /*
528 * Nothing to do here. If the device is in use, then the
529 * vfio sub-driver should block the remove callback until
530 * it is unused. If the device is unused or attached to a
531 * stub driver, then it should be released and we don't
532 * care that it will be going away.
533 */
549 break; 534 break;
550 case IOMMU_GROUP_NOTIFY_BIND_DRIVER: 535 case IOMMU_GROUP_NOTIFY_BIND_DRIVER:
551 pr_debug("%s: Device %s, group %d binding to driver\n", 536 pr_debug("%s: Device %s, group %d binding to driver\n",