On Fri, 12 Mar 2021 20:55:53 -0400 Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > The vfio_device->group value has a get obtained during > vfio_add_group_dev() which gets moved from the stack to vfio_device->group > in vfio_group_create_device(). > > The reference remains until we reach the end of vfio_del_group_dev() when > it is put back. > > Thus anything that already has a kref on the vfio_device is guaranteed a > valid group pointer. Remove all the extra reference traffic. > > It is tricky to see, but the get at the start of vfio_del_group_dev() is > actually pairing with the put hidden inside vfio_device_put() a few lines > below. > > A later patch merges vfio_group_create_device() into vfio_add_group_dev() > which makes the ownership and error flow on the create side easier to > follow. > > Reviewed-by: Christoph Hellwig <hch@xxxxxx> > Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx> > --- > drivers/vfio/vfio.c | 21 ++------------------- > 1 file changed, 2 insertions(+), 19 deletions(-) Reviewed-by: Cornelia Huck <cohuck@xxxxxxxxxx>