diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-08-17 21:32:56 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-08-22 10:26:42 -0400 |
commit | 31605debdf5459cc8aacabf192a911a803a81c26 (patch) | |
tree | 4f7921f9bc1976336afbbbf431450d1d247a6161 /drivers/vfio/vfio.c | |
parent | 90b1253e4139776e8257914ae9e2292d0de2fecc (diff) |
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 <alex.williamson@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'drivers/vfio/vfio.c')
-rw-r--r-- | drivers/vfio/vfio.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c index 887ae43276bb..17830c9c7cc6 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) | |||
1111 | */ | 1111 | */ |
1112 | filep->f_mode |= (FMODE_LSEEK | FMODE_PREAD | FMODE_PWRITE); | 1112 | filep->f_mode |= (FMODE_LSEEK | FMODE_PREAD | FMODE_PWRITE); |
1113 | 1113 | ||
1114 | fd_install(ret, filep); | ||
1115 | |||
1116 | vfio_device_get(device); | 1114 | vfio_device_get(device); |
1117 | atomic_inc(&group->container_users); | 1115 | atomic_inc(&group->container_users); |
1116 | |||
1117 | fd_install(ret, filep); | ||
1118 | break; | 1118 | break; |
1119 | } | 1119 | } |
1120 | mutex_unlock(&group->device_lock); | 1120 | mutex_unlock(&group->device_lock); |