From: Al Viro Date: Sat, 18 Aug 2012 01:32:56 +0000 (-0400) Subject: vfio: grab vfio_device reference *before* exposing the sucker via fd_install() X-Git-Tag: v3.6-rc3~7^2~3 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=31605debdf5459cc8aacabf192a911a803a81c26;p=~emulex%2Finfiniband.git vfio: grab vfio_device reference *before* exposing the sucker via fd_install() It's not critical (anymore) since another thread closing the file will block on ->device_lock before it gets to dropping the final reference, but it's definitely cleaner that way... Acked-by: Alex Williamson Signed-off-by: Al Viro --- diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c index 887ae43276b..17830c9c7cc 100644 --- a/drivers/vfio/vfio.c +++ b/drivers/vfio/vfio.c @@ -1111,10 +1111,10 @@ static int vfio_group_get_device_fd(struct vfio_group *group, char *buf) */ filep->f_mode |= (FMODE_LSEEK | FMODE_PREAD | FMODE_PWRITE); - fd_install(ret, filep); - vfio_device_get(device); atomic_inc(&group->container_users); + + fd_install(ret, filep); break; } mutex_unlock(&group->device_lock);