On Fri, Apr 29, 2022 at 02:28:20PM -0600, Alex Williamson wrote: > On Thu, 21 Apr 2022 13:28:38 -0300 > Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > > > When the open_device() op is called the container_users is incremented and > > held incremented until close_device(). Thus, so long as drivers call > > functions within their open_device()/close_device() region they do not > > need to worry about the container_users. > > > > These functions can all only be called between open_device() and > > close_device(): > > > > vfio_pin_pages() > > vfio_unpin_pages() > > vfio_dma_rw() > > vfio_register_notifier() > > vfio_unregister_notifier() > > > > Eliminate the calls to vfio_group_add_container_user() and add > > vfio_assert_device_open() to detect driver mis-use. > > A comment here explaining that decrementing open_count is pushed until > after close_device to support this feature would help to explain the > somewhat subtle change in vfio_group_get_device_fd(). I changed it like this: Eliminate the calls to vfio_group_add_container_user() and add vfio_assert_device_open() to detect driver mis-use. This causes the close_device() op to check device->open_count so always leave it elevated while calling the op. Thanks, Jason