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@nvidia.com 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