On 11/16/2016 07:11 AM, Alex Williamson wrote: > On Tue, 15 Nov 2016 19:35:46 +0800 > Jike Song <jike.song@xxxxxxxxx> wrote: > >> The user of vfio_register_notifier might care about not only >> iommu events but also vfio_group events, so also register the >> notifier_block on vfio_group. >> >> Cc: Xiao Guangrong <guangrong.xiao@xxxxxxxxxxxxxxx> >> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> >> Cc: Alex Williamson <alex.williamson@xxxxxxxxxx> >> Signed-off-by: Jike Song <jike.song@xxxxxxxxx> >> --- >> drivers/vfio/vfio.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c >> index b149ced..2c0eedb 100644 >> --- a/drivers/vfio/vfio.c >> +++ b/drivers/vfio/vfio.c >> @@ -2065,6 +2065,8 @@ int vfio_register_notifier(struct device *dev, struct notifier_block *nb) >> else >> ret = -ENOTTY; >> >> + vfio_group_register_notifier(group, nb); >> + >> up_read(&container->group_lock); >> vfio_group_try_dissolve_container(group); >> >> @@ -2102,6 +2104,8 @@ int vfio_unregister_notifier(struct device *dev, struct notifier_block *nb) >> else >> ret = -ENOTTY; >> >> + vfio_group_unregister_notifier(group, nb); >> + >> up_read(&container->group_lock); >> vfio_group_try_dissolve_container(group); >> > > You haven't addressed the error paths, if the iommu driver returns > error and therefore the {un}register returns error, what is the caller > to expect about the group registration? > Will change to: driver = container->iommu_driver; if (likely(driver && driver->ops->register_notifier)) ret = driver->ops->register_notifier(container->iommu_data, nb); else ret = -ENOTTY; if (ret) goto err_register_iommu; ret = vfio_group_register_notifier(group, nb); if (ret) driver->ops->unregister_notifier(container->iommu_data, nb); err_register_iommu: up_read(&container->group_lock); vfio_group_try_dissolve_container(group); err_register_nb: vfio_group_put(group); return ret; -- Thanks, Jike -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html